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


    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都是兄弟,所以它们一起运动,它们的运动由它们的容器(集合对象)控制.
     

    高度:

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

    参考资料:

     
     
  • 相关阅读:
    javascript日期相减,求时间差
    Python向PHP发起GET与POST请求
    Discuz安装
    Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)
    聚合类新闻client的改进
    Spring MVC 框架搭建及具体解释
    兼容placeholder
    创建cocos2d-x+lua项目
    纯CSS弹出层,城市切换效果
    tcp_recvmsg 函数具体解释
  • 原文地址:https://www.cnblogs.com/mengdd/p/4463485.html
Copyright © 2020-2023  润新知