Material Design 概念,环境和基本属性

Material Design是随Android 5.0推出的一种设计概念, 涉及到了跨平台和设备的视觉,动态,交互设计等方面.
 
设计概念
Material Design的灵感来自于对纸和墨水的研究,基于触觉现实感.并且它还在继续地发展扩充,有很大的想象空间.
基于现实,让材料的表面和边缘提供视觉线索. 熟悉的触觉属性可以帮助用户快速地明白正在发生什么.
光,表面和运动的一些基本规则是很关键性的因素,它们可以传达物体在空间如何存在,运动和交互.
运动是很关键的因素,可以吸引注意力和保持连续性. 反馈需要微小但是清晰, 转换需要有效率但是还要保持连贯.
 

Material Environment

Material环境是一个3D环境:
 
新添加的Z轴垂直于手机平面,指向屏幕正面之外(指向用户).
每一片材料都占据了Z轴上的一个地方,默认有1dp的厚度.
 

光和影

在material环境中是有光照的,主要的光线创建了有方向的影子,同时环境光创造了全方向的软阴影.
 
 

Material properties

物理属性:

材料有各种X和Y轴尺寸(dp单位), 但是有统一的Z轴尺寸,也就是厚度,都是1dp.
材料会投出影子. 影子是由于材料元素之间Z轴的相对位置自然导致的. 不要给相同Z轴位置的材料元素之间加上影子,这样会导致误解.
材料可以展示shape和colour的内容,各种图像视频, 内容不会给材料增加厚度.
内容的行为是与材料独立的,但是它不能超出材料的边界. 比如内容可以在材料限定的框里独立运动和缩放.
材料是实心的(solid). 输入事件不能穿过材料去影响下层的材料.
多种材料元素不能同时占据同一维度空间,可以改变它们的高度.
材料不能穿过其他材料,因为它们都被认为是实心的.
 

材料转换:

材料可以改变形状,大小,但是它的生长和缩小都只能局限在它的平面.
材料不能弯曲或者折叠.
多片材料可以组合到一起变成一片材料.
材料也可以分割,再合成一片等等.
 

材料的运动:

材料可以自然地生成或者销毁.(缩放动画).
材料可以以任意的轴向运动.(比如任意轴旋转).
Z轴向的运动通常是因为用户和材料的交互.
 
 

3D空间中的物体

Material Design中的物体和真实世界的物体有类似的特质.
在真实的物理世界中,物体可以堆积或者附着在一起,但是不能穿过去, 物体也会投射出影子,发射光线.
这些特性组成了一个用户熟悉的空间模型,可以跨应用一致应用. 
 

Elevation (Android)

高度(Elevation)指的是两个表面之间的Z轴相对距离. child的高度是相对于它的parent的.
高度测量的单位和X轴Y轴相同,通常用dp. (density-independent pixels).
由于材料有一个标准的1dp厚度,所有的高度都是测量两个表面顶部之间的距离.
 

Resting elevation: 静止高度

每一个材料物体都有一个静止高度(默认高度), 称作resting elevation.
 
物体的默认高度一般是不会改变的,即便要改变自己的高度,也应该尽快回到自己的默认高度.
比如一个材料,正常的高度是2dp,当它被点击时,它的高度变为6dp,当点击结束,它应该回到默认的2dp.
一个组件的默认高度在各个app中应该是一致的.
但是跨平台的情况,高度可以不同,比如,TV比移动和PC端的深度更大.
 

Responsive elevation and dynamic elevation offsets

响应式的高度和动态高度偏移
 
一些组件类型有响应式的高度,也即,有的组件会用高度变化来响应用户的输入(比如,正常,获得焦点,点击)或者系统的事件. 这些高度变化用动态高度偏移来统一实现.
 
动态高度偏移(Dynamic elevation offsets)是组件相对于它的静止高度来说,要移动的目标高度(goal elevation). 它们保证了无论动作和组件类型, 高度变化是一致的. 比如,所有在点击时需要提高高度的组件,它们提高的程度是相等的.
比如,虽然floating action button的静止高度比其他button高,但是它点击后也是跟其他button一样在自身的静止高度上提高6dp (Dynamic elevation offset).
 
一旦输入事件完成或者取消,组件都会回到自己的静止高度.
 
 

有用的Shadow

阴影提供了非常重要的视觉线索,显示出对象的深度和有方向的运动.
它们是唯一可以显示界面之间分离程度的视觉线索.
(如果没有阴影,就显示不出来floating action bar和下方界面是分离的).
一个对象的高度决定了它的阴影.
更模糊的阴影一般显示出了更高的高度.
 
运动过程中,阴影也可以为我们提供运动方向的线索,各个表面之间的距离到底是增大还是缩小.
有阴影的变化,我们能判断出有高度的变化.
高度高的物体投射出更大更模糊的阴影.
 
如果阴影没有变化而大小变化,说明是物体被放大了(尺寸改变),而不是高度变化了.
 
 

Object relationships: 物体关系

物体的继承关系

你在一个应用中如何组织物体或者物体的集合,决定了它们相对于彼此如何运动.
物体可以独立运动,也可以被它们继承关系中更高级的物体所限制.
 
所有的物体都处在一个继承体系中,有着parent-child的关系,一个元素可以是另一个元素的child,也可以是系统的child.
Parent-child规范:
(1)每一个对象都有一个parent;
(2)每一个对象都可以有若干个children;
(3)child继承了parent的转变属性,比如位置,缩放,旋转和高度.(parent移动的时候上面的child也一起动);
(4)兄弟(siblings)指在继承体系中处于同一级的对象.
 
几个特例:
Items parented to the root, 比如基本UI元素, 运动是和其他元素独立的.
比如, floating action bar不随着内容滚动.
还有其他元素包括: 应用的边界导航抽屉菜单; action bar, Dialogs.
 

交互:

物体在继承体系中的parent-child地位决定了它们之间如何交互.
比如:
1.children和parent之间的z轴距离是最小的,其他不在这个继承体系中的对象是不能介入到parent和children之间的.
2.在一个滚动的card集合中,所有的card都是兄弟,所以它们一起运动,它们的运动由它们的容器(集合对象)控制.
 

高度:

物体的高度取决于你想表达的内容体系,也取决于一个对象是否需要独立于其他对象来运动.
 
 
 
 
 

参考资料:

 
 

Material Design 概念,环境和基本属性的更多相关文章

  1. Instagram的Material Design概念设计文章分享

    近期開始研究最新的Android 5 Material Design,一加氢OS公布后,非常快就有一大批支持Android5原生风格的手机出来了,你的App还是UI帮设计的吗?该考虑升级到 Mater ...

  2. Material Design学习笔记

    Wiki->移动开发->Android->Material Design-原质化设计 (友情链接:http://wiki.jikexueyuan.com/project/materi ...

  3. Material Design说明

    原文链接: Material Design 引言 我们挑战自我,为用户创造了一种视觉语言,综合了好设计的经典原则,革新以及科技的可能性.这就是material design.这份说明是一个动态的文档, ...

  4. flutter学习之二Material Design设计规范

    前言: 最近在自学flutter跨平台开发,从学习的过程来看真心感觉不是那么一件特别容易的事.不但要了解语法规则, 还要知晓常用控件,和一些扩展性的外延知识,所以套一句古人的话“路漫漫其修远矣,无将上 ...

  5. Android5.0新特性-Material Design

    概述 2014年,Google携Android5.X重装归来.全新的UI设计和更加优化的性能,令开发人员眼前一亮 安装和配置Android5.0开发环境 开发Android还得靠AS.下载地址 htt ...

  6. 【Material Design视觉设计语言】应用样式设计

    作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://github.co ...

  7. 一文彻底搞清楚 Material Design

    一文彻底搞清楚 Material Design 首先声明以下介绍的关于 Material Design 的介绍,都是基于在 Android 环境下,其实 Material Design 是一种为了让 ...

  8. Material Design Animation

    Material Design Animation Authentic motion 真实的运动 运动以一种优美流动的形式描述了空间关系,功能和目的. Mass and weight: 质量和重量 在 ...

  9. Android Material Design 兼容库的使用

    Android Material Design 兼容库的使用 mecury 前言:近来学习了Android Material Design 兼容库,为了把这个弄懂,才有了这篇博客,这里先推荐两篇博客: ...

随机推荐

  1. 简单java在线测评程序

    简单java程序在线测评程序 一.前言 大家过年好!今年的第一篇博客啊!家里没有网,到处蹭无线!日子过得真纠结!因为毕设的需求,简单写了一个java程序在线测评程序,当然也可以在本地测试. 二.思路 ...

  2. 创建 flat network - 每天5分钟玩转 OpenStack(87)

    上一节我们讨论了 flat network 的原理,今天就来创建 "flat_net" 并分析底层网络的实现. 打开菜单 Admin -> Networks,点击 “Crea ...

  3. Backup Volume 操作 - 每天5分钟玩转 OpenStack(59)

    本节我们讨论 volume 的 Backup 操作. Backup 是将 volume 备份到别的地方(备份设备),将来可以通过 restore 操作恢复. Backup VS Snapshot 初看 ...

  4. Ruby之基本数据类型(三)

    前言 上一节我们介绍了常量以及变量的用法,这一节我们开始来介绍Ruby中的一些基本类型. 数值类型(Fixnum.Bignum.Float) Ruby的数值类型包括整数和浮点数.整数包括Fixnum和 ...

  5. 借助node实战JSONP跨域

    一.前言: 浏览器安全是基于同源策略的.所谓同源策略就是三相同: 1.协议相同: 2.域名相同: 3.端口相同. 但,凡事都是有利弊,同源策略也导致了我们想用AJAX跨域请求,但NO!!为了规避这种限 ...

  6. spring源码分析之spring-core-env

    看一下源码整体: 抓住主要点,Environment.PropertyResolver.PropertySource,其结构如下: 其中, Environment:Interface represen ...

  7. js ES6 对字符的操作注意事项

    1.codePointAt方法是测试一个字符由两个字节还是由四个字节组成的最简单方法. function is32Bit(c) { return c.codePointAt(0) > 0xFFF ...

  8. Myeclipse无法开启Servers视图解决办法

    IDE报错如下:  解决办法:1.首先关闭MyEclipse工作空间. 2.然后删除工作空间下的 “/.metadata/.plugins/org.eclipse.core.runtime/.sett ...

  9. iis7.0上发布mvc4.0网站

    步骤如下: 1.右击需要发布的项目,在弹出的菜单中选择“发布...”选项 2.在“发布web”对话框中进行设置,配置文件名称默认为“配置文件1”可以修改为需要的名字,以便识别,也可以不改.发布方法选择 ...

  10. 工作流引擎Oozie(一):workflow

    1. Oozie简介 Yahoo开发工作流引擎Oozie(驭象者),用于管理Hadoop任务(支持MapReduce.Spark.Pig.Hive),把这些任务以DAG(有向无环图)方式串接起来.Oo ...