«

Material design 学习笔记

有大抵一个多月时间没回来码字了,记得三四月的时候捡来Google的Material Design开始看起,但是就好像是每一次看Guide一样,总都有一种看着看着就要掉线的节奏。 还好借着这次新接的项目,所谓实践出真知,把Material Deisgn里里外外的翻了翻。

刷MD的时候,很大一部分的感觉上是这不仅仅是一份规范,是一份很好的学习资料,就好比在使用哪些Terminology的规范上,Google也很贴心的告诉你哪些是好例子哪些是范例,并且将原因也说的很明确。

项目还在进行中,在这次的项目的进展中,可能更大程度上扮演的是GUI的角色,UX方面也有努力去优化,而产品的设计过程本身有点本末倒置,代码已经写完,才来做UI的确会有很大的限制,这可能更像是带着镣铐跳舞。

而MD的规范看遍后,该遵守的,不该遵守的也要了然于心,只有掌握了规则,才能更好的突破规则。

今天记录一下MD设计中的一些基本规范。

基本尺寸规范&切图

Density Bucket Scaling factor Density
MDPI 1x 160dpi
HDPI 1.5x 240dpi
XHDPI 2x 320dpi
XXHDPI 3x 480dpi
nexus 3.5x  
XXXHDPI 4x 640dpi

以下是一些常见的尺寸与距离:

元素 尺寸
顶部状态栏高度: 24dp
Appbar最小高度: 56dp
底部导航栏高度: 56dp
底部黑色导航栏: 48dp
悬浮按钮尺寸: 56x56dp/40x40dp
用户头像尺寸: 64x64dp/40x40dp
小图标点击区域: 48x48dp
侧边抽屉到屏幕右边的距离: 56dp
卡片间距: 8dp
分隔线上下留白: 8dp
大多元素的留白距离: 16dp
屏幕左右对齐基线: 16dp
文字左侧对齐基线: 72dp
所有可操作元素最小点击区域尺寸: 48dp X 48dp

另外注意56dp这个数字,许多尺寸可变的控件,比如对话框、菜单等,宽度都可以按56的整数倍来设计

色彩

通常只需要选取主色和强调色就行了。辅助色非必须,辅助色可以是主色的加深或减淡的变化。 主色应该是App上最广泛使用的色彩。(可以同过加深/减淡主色,扩展色彩配置)

Google建议使用500Colors的作为主色调,其他可选用为强调色。

强调色使用的场景:

Appbar背景使用主色,状态栏背景使用深一级的主色或20%透明度的纯黑。 小面积需要高亮显示的地方使用强调色。

Palette-perfect

字体

字体类型

英语 中文
Roboto Noto
English Dense

(其他例如中东地区的文字属于Tall)

字体大小

  超大号文字 大标题 App bar文字 小标题 正文文字/按钮文字 小字提示
English 112/56/45/34sp Regular 24sp Regular  20sp Medium 16sp(桌面端15sp) Regular 14sp(桌面端13sp) Medium 12sp Regular
Dense 112/56/45/34sp Regular 24sp Regular  21sp Medium 17sp(桌面端16sp) Regular 15sp(桌面端14sp) Medium 13sp Regular

导航栏字体大小: 12dp Tab栏字体大小: 14dp

字体颜色

黑色文字(#000000) 透明度
一级文字 87%
二级文字 54%
禁用文字,提示文字,图标 38%
分隔行 12%
白色文字(#ffffff) 透明度
一级文字 100%
二级文字 70%
禁用文字,提示文字,图标 50%
分隔行 12%

行高

由于文字是以4dp为基准,因此,行高为20dp, 24dp, 32dp, 36dp,以此类推。

图标

系统图标

系统图标颜色:

  正常状态 禁用状态
黑色图标 54% 26%
白色图标 100% 30%

系统图标尺寸:

系统图片绘制注意点:

图片

图片使用的原则:

图片使用注意点:

图片在UI中的使用

图片的四种类型:

Avatars 和Thumbnails通常来说都是可以触发点击的,点击后可能看到更加完整的信息。 Avatar通常显示的是个人的头像,或者品牌的logo,而Thumbnails可以让你看到更多的信息。

Hero images通常是放置在最重要的位置上, 比如屏幕上方的banner,主要用来吸引用户的视线,加强文字内容的表达,或者加强品牌形象。

Gallery是Hero images有序的排列,列表的排序或者单个一张图片。

按钮

MD的button在触发点击的时候,会有波纹的产生。

按钮的类别:

扁平按钮不会抬起,只是以文字形式出现,但是在点击的时候文字会有背景色。 可能会在对话框,工具栏中出现。

凸起按钮是长方形的纸片,在点击的时候会抬起, 抬起高度为2dp.

至于是使用扁平按钮还是凸起按钮,主要看其使用的地方z-space有多少。不要产生层级太多的情况。 在一屏内容里只能使用一种按钮形式。除非你有很好的其他理由。

三种按钮的重要性依次为:悬浮按钮 > 凸起按钮 > 扁平按钮

凸起按钮

凸起按钮给扁平的页面添加的层次感,凸起按钮可以帮助暗示页面内容的划分。

高度 最小宽度 可触发点击范围 卡片角度 文字大小 文字左右边距
36dp  88dp 48dp 2dp 14dp Roboto Medium 16dp

按钮与按钮之间的距离: 16dp

扁平按钮:

使用场景:

高度 最小宽度 可触发点击范围 角度 文字大小 文字左右边距
36dp 64dp 48dp 2dp 14dp Roboto Medium 8dp

按压后外边框外边距:8dp 按钮同按钮之间的距离:8dp

悬浮按钮

悬浮按钮是一款App里面最主要的按钮。

Fab按键可以触发的形式:

卡片

卡片可以包含图片,文字,连接。可以包含不同大小的元素。

卡片布局

所有内容距离卡片边距:16dp 卡片圆角:2dp 卡片与卡片间距离:8dp 屏幕边界与卡片间留白:8 dp

字体

正文:14 sp 或 16 sp 标题:24 sp 或更大 扁平按钮:Roboto Medium, 14 sp, 10 sp 字间距

卡片可以将额外内容隐藏,比如评论内容,点击下拉按钮展示更多内容。

底部导航栏

顶部标签栏(Tab)

仅有文字的tab栏

既有文字又有icon的tab栏

仅有图标的tab栏

抽屉式导航栏(Navigation drawer)


以上笔记并不完善,没有插图,主要是为了能够迅速找到需要的一些主要元素的尺寸。

参考资料:

学习MD最好的资料当然还是取之于官网材料,当然要注意的是这绝对不是一个你只打开一次的文档,基本要来来回回的不断翻开,由于翻墙速度堪忧的原因,我个人将几个没有小视频的文档都存成了PDF这样查看起来瞬间就方便了不少。 要注意的是,Google会时不时的去更新MD,比如最近一次最重大的更新就是底部导航栏了,这玩意儿本来只是ios的,MD也弄来了~ 很多人吐槽说,这下好了,屏幕使用率更加堪忧了~但其实在实行过程中你会发现tabs,buttom naviagtion,和drawer并一定需要共存~

Google Material design guideline

不推荐大家直接上手读中文版的guideline,翻译问题不少,也不完善,但是要翻好也不容易,看着中文也感到挺累的,可以作为参照,如果英文觉得啃得有点辛苦,可以参照一下中文版,说不定,就豁然开朗了。

Material Design 中文版

Cola Chan的MD学习笔记还是很值得一看的,算是高度浓缩版。

material design学习笔记

参考视频

建议大家有空去把Google I/O上关于设计的和MD的视频都扫一遍,下面是列出的是一些我觉得值得看,并和MD相关的一些视频~

MD设计规范

Google I/O 2014 - Material design principles

Google I/O 2014 - Material design: Structure and components

[Google I/O 2014 - Material design: Visual style and imagery] (https://www.youtube.com/watch?v=ctzWKRlTYHQ)

Google I/O 2014 - Material design: Motion

MD设计实践

Google I/O 2014 - Material design in Google Play

设计师vs工程师

这个视频解释了Android的基本尺寸,解释了为什么要用一倍图设计的原因以及好处

Designer & developer communication - Google I/O 2016

这里主要是给大家提供一个思路,感受一下Google设计师设计流程,以及设计的英文术语

Learning to speak Designer - Google I/O 2016

工具

这个网站可以帮你迅速生成Android设计中所需要的icon尺寸,点九图等。有空我得把点九图的制作方法整理一下~

Android Asset Studio

如果说写这篇文章只是为了记录MD的最最基本的规范法则的话,那么为了更好的理解Material design,我又写了一篇理解Material design的文章,试图抛开细节,从宏观上来看MD~

Share Comment on Twitter