Material Design

Material Design,中文名:材料设计语言,在2014年的 Google I/O 上推出,是由Google推出的全新的设计语言,谷歌表示,这种设计语言旨在为手机、平板电脑、台式机和“其他平台”提供更一致、更广泛的“外观和感觉”。

Google 的 Material Design 并不是简单的扁平设计,而是一种注重卡片式设计、纸张的模拟、使用了强烈对比色彩的设计风格。

Material Design的隐喻

Material Design 并不是完全的抽象扁平风格,它从物理现实中学习了诸如质感、投影、加速度、纸张的模拟等隐喻方法,这些都会让 Material Design 更容易被用户理解。

Material Design核心思想

把物理世界的体验带进屏幕。去掉现实中的杂质和随机性,保留其最原始纯净的形态、空间关系、变化与过渡,配合虚拟世界的灵活特性,还原最贴近真实的体验,达到简洁与直观的效果。

MaterialDesignThemes怎么用 materia design_设计

Material design是最重视跨平台体验的一套设计语言。由于规范严格细致,保证它在各个平台使用体验高度一致。不过目前还只有Google自家的服务这么做,毕竟其他平台有自己的规范与风格。

MaterialDesignThemes怎么用 materia design_二维_02

Dp 是独立密度像素的简称(Density-independent pixels)。是安卓设备上的基本单位,如同苹果设备上的 pt 一样,dp 与我们建图时的 px单位需要通过分析设备的 PPI值来换算。大家还记得 PPI公式吗?

MaterialDesignThemes怎么用 materia design_设计_03


△ PPI计算公式

那如果我们有了一个设备的 ppi值,然后使用公式即可知道这个设备里1dp等于多少像素了:

dp*ppi/160 = px

比如这个设备的 PPI值是320,那么:1dp x 320ppi/160 = 2px。则,这个设备上1dp等于2像素。(也就是和iPhone 6类似的高清屏)。在给安卓设计稿做标注时,我们可以在像素大厨等标注软件中选择我们做图的分辨率(如:xxhdpi),然后标注单位中可以选择 dp单位,这样我们标注的单位数值和安卓开发工程师使用的单位就一致了。否则安卓工程师要进行二次换算把我们标注的 px单位换算成 dp单位才可以进行工作。在下文中,我写到的大部分设计尺寸的单位都是dp,也就是说我们要针对不同的屏幕进行换算,比如在 hdpi下,1dp经过换算等于1.5px;而在 xhdpi下,1dp=2px。

MaterialDesignThemes怎么用 materia design_设计语言_04

SP 是独立缩放像素的简称(Scale-independent Pixel)。Android平台允许用户自定义文字大小(小、正常、大、超大等等),当文字尺寸是「正常」状态时,1sp=1dp=0.00625英寸,而当文字尺寸是「大」或「超大」时,1sp就大于1dp。就好比我们在电脑中调整桌面字体后,只有字体大小发生改变,而窗口和图标不会改变一样。默认情况下1SP=1DP。所以我们在设计安卓界面时,标记字体的单位选用SP单位。很多标注软件诸如蓝湖和像素大厨都支持SP单位标记字体。

材质和空间

材质

Material design中,最重要的信息载体就是魔法纸片。纸片层叠、合并、分离,拥有现实中的厚度、惯性和反馈,同时拥有液体的一些特性,能够自由伸展变形。

MaterialDesignThemes怎么用 materia design_material design_05


纸片的魔法特性,真实纸片所不具备的能力:

  1. 纸片可以伸缩、改变形状
  2. 纸片变形时可以裁剪内容,比如纸片缩小时,内容大小不变,而是隐藏超出部分
  3. 多张纸片可以拼接成一张
  4. 一张纸片可以分裂成多张
  5. 纸片可以在任何位置凭空出现

不过,魔法纸片有些效果是禁止的:

  1. 一项操作不能同时触发两张纸片的反馈
  2. 层叠的纸片,海报高度不能相同
  3. 纸片不能互相穿透
  4. 纸片不能弯折
  5. 纸片不能产生透视,必须平行于屏幕

空间

MaterialDesignThemes怎么用 materia design_二维_06


Material design引入了z轴的概念,z轴垂直于屏幕,用来表现元素的层叠关系。z值(海拔高度)越高,元素离界面底层(水平面)越远,投影越重。这里有一个前提,所有的元素的厚度都是1dp。

Z轴概念

我们都知道什么是三维:三维就是X轴(左右)、Y轴(上下)、Z轴(前后)组成的立体世界,而二维就是只有X和Y轴的平面世界。手机界面是一个平面二维的空间,而 Material Design 通过二维的一些表达手段,比如投影、动效等构建出了Z轴(前后)的概念。

Z轴的投影

不同投影暗示了不同元素的高度,我们可以理解为如同我们桌子上的几张纸层叠在一起,那么我们认为重要的纸在其他纸张之前,它的投影是最高的。所以在 Material Design 中投影最高的代表Z轴最高值,也是最重要的内容。

MaterialDesignThemes怎么用 materia design_Google_07


△ 2dp、6dp、12dp、24dp的投影区别

MaterialDesignThemes怎么用 materia design_设计语言_08


△ 在正面和侧面来观看,1dp和8dp海拔高度产生出阴影大小的不同

界面中的Z轴应用

不同的功能使用不同的Z轴高度可以表明他们的重要性和逻辑层级关系。并且这种投影是由编程完成的并非切图,这点需要注意一下。Material Design 为第三方开发者提供了动态且真实的投影和Z轴高度设置。

MaterialDesignThemes怎么用 materia design_二维_09


△ APP中不同的Z轴高度

MaterialDesignThemes怎么用 materia design_设计_10


△ 顶部应用栏(A)、卡片式设计(B)和悬浮球FAB(C)高度的对比

MaterialDesignThemes怎么用 materia design_设计语言_11


△ 界面中海拔高度对照

MaterialDesignThemes怎么用 materia design_设计_12这不止是设计的概念,开发人员确实可以通过一个值来控制元素的海拔高度和投影。