在做原型的时候,和设计师交流的过程中,发现在设计安卓交互的过程中,其实是存在一些基本规则的。那这些规则,可以保证第一应用美观,第二不会出现反人类的开发难度,第三,用设计师的话说就是可能会有“最好的体现”,接着领导就发了一个安卓APP的设计的基本法给我(https://developer.android.com/design/),不过材料点进去基本都是英文的,跟着也比较乱,所以打算好好用自己的弱逼英语和归纳能力把这个基本法好好整理一下。

原材料从以下两个方面对APP的设计进行介绍

  • Material Foundation (素材基础)
  • Material Guidelines (素材基本法)

在素材基础中,包括以下方面

  • Foundation Overview(基础总览)
  • Environment (环境)
  • Layout (页面布局)
  • Navigation (导向与链接)
  • Color (色彩)
  • Typograph (字体样式)
  • Icongraph (图标样式)
  • Shape(形状)
  • Motion(动画效果)
  • Interaction (交互)
  • Communication (旨意传达)

那么我的文章以后会先从以上的各个方面去一一的做一个介绍

1.1 Foundation Overview (基础总览)

素材设计可以通过操控用户交互区域,表面以及组成素材来控制一个APP的呈现效果。而且在设计的策略上,要分别从整体和细节两个角度去入手考虑。

1.2 Environment (环境)

对于app的整体环境上,原文是分三点进行表述

  • Surfaces(表面,整体外观)
  • Elevation (仰角,也就是图层之间的距离)
  • Light and shadows (光线和阴影)

1.2.1 Surfaces(表面,整体外观)

总的来说,在设计上,我们通过控制表面,各个图层的深度,以及阴影来控制一个立体的效果展示。这些设计构成整体的外观的素材设计。

1.2.1.1 Material environment (素材环境)

现实世界

在现实世界中,所有的物体是可以堆叠或者紧挨着的,但是没办法穿过彼此对方。这个过程中产生阴影或会反射光线。

在APP的交互设计中,我们希望在展示或者移动这些平面时,尽量让它们类似于现实世界的方式。并且在不同的app中,尽量让他们的移动规则都保持一致。

深度

通常,APP的交互页面上,我们会通过使用光线,表面自己阴影来展现出一种3d的环境。在这个环境中,所有的元素的移动方式可以是水平的(x轴),竖直的(y轴)或者是在z轴上来移动。这里,深度就用不同的界面在z轴上的不同的位置在展现。

1.2.1.2 Properties(特性)

在素材的设计中,我们尽可能的保持每个表面都是一致以及不可改变的。

维度

首先,每个素材块,他们在x,y轴的尺寸,是可以改变的,但是在厚度上,我们都会设置他为1dp (禁止设计出来不同的厚度)

阴影

这里只有一点,就是在当我们的平面处于不同的高度位置的时候,他在下一个面产生的阴影,会相应的发生改变和调整。

分辨率

我们的所有的素材,要有无限的分辨率,也就意味着,就算我们图片放大,依然可以达到我们期望的精度,而不会让图片糊了。

页面上的内容

当我们在页面上添置内容的时候,内容不会增加我们页面的厚度(依然是1dp),内容不是独立的页,他只是附着在页面上而已。

物理特性

我们的组件和元素,这里我们默认他们都是固体状的,那他们之间的显示效果,是不能互相穿透。所以在视觉显示效果上,不同的平面组件,他们是不可能同时再有相同的坐标点。(比如叠在一起时,z的坐标是不同的),这时候我们通过设置阴影还有仰角来达到这个视觉效果。还有既然是我们默认我们的固件是固体状,所以他的呈现状态是无法像液体或者气体一样,扩散到一个空间内。

素材的改变

首先,我们的素材是可以改变形状。

其次,素材可以改变透明度来改变呈现方式

再次,素材可以在在水平和竖直的方向,进行延伸或者收缩

但是我们这里需要注意,素材平面是不能折叠或者弯曲的。

同时,我们的素材平面,是可以两个在z位置一样的平面,组装在一起,成为一个大的平面,然后他们还可以再拆解成两个平面。

移动

首先,素材平面可以在一个给定位置 生成,或者消失

其次,素材平面可以沿着任何轴来移动

然后,不同的素材平面,他们在移动的时候,可以有协调。就比如同步,或者有一定的节奏。

然后,特别要注意,当素材平面在z轴方向发生移动的时候,往往都是用户交互之后的结果

1.2.1.3 Attribute (属性)

首先,基础的素材平面,都是白色,不透明,厚度为1dp的的平面,并且会产生阴影。然后我们对这个平面进行相应的修改,就会得到我们需要的平面效果。

素材平面的行为

  • Rigid Surface: 在所有的交互中,尺寸保持不变
  • Stretchable surfaces:在一个或者多个边可以收缩或者伸展,这里有一定的尺寸限制,接着不在发生改变
  • Pannable surfaces: 在展现的过程中,尺寸不变,但是可以通过滑屏的时候,会发现为了展现更多的内容,尺寸有一定的延伸。

接着,我们可以在一个界面中,使用不同的素材,来达到最好的呈现效果

Stretchable surfaces

这种平面,一般来用来表现“阅读更多”

然后我们在设计的过程中,通过来移动我们的素材的平面,来展现更多平行信息。

同时,每个模块的移动,还可以是独立的。如下:

在移动的过程中,我们可以巧妙的利用上层图层的透明度来达到一定更好的展现结果

Scrim

在平面的交互过程中,我们可以通过一定的手段,让一些色块或者图层变的不这么重要。我们一般都会用下面的手段。

  • 让一个色块变的暗或者变亮
  • 降低他们的不透明度

Android 美学设计基础 <1>的更多相关文章

  1. Android 美学设计基础 <3>

    本期接着对Android的美学设计的分享. 1.3 Light and shadows 光学与阴影 1.3.1 Light 在素材设计的环境中,我们会用虚拟的光来照亮UI界面.主灯光会产生尖锐,有方向 ...

  2. Android 美学设计基础 <2>

    我们接着上期的项目进行分享. 1.2.2 Elevation (仰角) 仰角只的是不同的素材块在Z轴上的选对位置 仰角的测量方式 这里只的是两个平面在z的距离,记住我们默认每个平面都是1dp的厚度 1 ...

  3. Android程序设计基础作业目录 (作业笔记)

    Android程序设计基础 • [目录] 第1章 Android程序入门 >>> 1.2.4 安装并配置 Android Studio 开发工具和 Genymotion 模拟器. 1 ...

  4. Android程序设计基础 • 【目录】

    章节 内容 实践练习 Android程序设计基础作业目录 (作业笔记) 第1章 Android程序设计基础 • [第1章 Android程序入门] 第2章 Android程序设计基础 • [第2章 基 ...

  5. Android程序设计基础 • 【第1章 Android程序入门】

    全部章节   >>>> 本章目录 1.1 Android 平台介绍 1.1.1 Android 简介 1.1.2 Android 平台的发展 1.1.3 Android 平台架 ...

  6. Android与MVC设计模式

    写在前面,之前做过一段时间移动开发,后来因为工作原因搁浅了,最新重新拿起Android权威编程指南学习,顺道做个学习笔记. 首先呢,我想说无论是计算机科班出身还是培训班出身,都听说过高内聚低耦合以及M ...

  7. 赵雅智:android教学大纲

    带下划线为详细内容链接地址.点击后可跳转.希望给大家尽一些微薄之力.眼下还在整理中 教学章节 教学内容 学时安排 备注 1 Android高速入门 2 Android模拟器与常见命令 3 Androi ...

  8. 详解 “Android UI”设计官方教程

    我们曾经给大家一个<MeeGo移动终端设备开发UI设计基础教程>,同时很多朋友都在寻找Android UI开发的教程,我们从Android的官方开发者博客找了一份幻灯片,介绍了一些Andr ...

  9. Android Develop 之 Ddevelop WorkFlow Basics

    Android应用程序的开发流程一言以蔽之,可以用一图五步概括.一图如下. 第一步:安装.安装开发环境,包括JDK,Android Studio,SDK Manager(通常下载Android Stu ...

随机推荐

  1. vue2.0 tab切换几种方式

    第一种 比较灵活简单的方式(切换改变部分的内容在组件中比较方便操作) <template> <div id="app"> <ul> <li ...

  2. linux新安装JDK不生效的问题

    新安装了jdk,但重新连接之后仍然显示老的jdk 1. which java 2. which javac 3. rm -rf /usr/bin/java 4. rm -rf /usr/bin/jav ...

  3. 部署maven的一些要点、遇到的问题

    一. maven环境的搭建 . 下载并配置maven(可做可不做) ()到http://maven.apache.org下载maven的最新版本,并解压到某一目录(假设是d:\develop\apac ...

  4. [python] can not find app ,module

    can not find module 1 startapp appname 而不是 startproject 2 不要自己创建项目根目录,要用mamage.py生成 can not find app ...

  5. 结构体的sort【防止遗忘w】

    #include<iostream> #include<algorithm> using namespace std; int n; struct jie { int num; ...

  6. 如何在win 2008 server和win 7上add web site

    在 windows 2008  server 英文版的操作系统上,通过桌面上的 Computer 右键选择 Manage ,打开 Server Manager,选中左侧资源树中的Roles 在上图右侧 ...

  7. 详解JMeter正则表达式

    详解JMeter正则表达式(1) 1.概览 JMeter中包含范本匹配软件Apache Jakarta ORO .在Jakarta网站上有一些关于它的文档,例如a summary of the pat ...

  8. Reactor 模型(一)基本并发编程模型

    Reactor 模型(一)基本并发编程模型 Netty 系列目录 (https://www.cnblogs.com/binarylei/p/10117436.html) 在讲解 Reactor 线程模 ...

  9. 2018.09.27 codeforces1045D. Interstellar battle(期望dp)

    传送门 一道有意思的期望dp. 题意是给出一棵树,每个点最开始都有一个gg的概率,有m次修改,每次修改会把某个点gg的概率更换掉,让你求出每次修改之后整个树被分成的连通块的数量的期望(gg掉的点不算) ...

  10. python编码(三)

    python 有str object 和 unicode object 两种字符串,都可以存放字符的字节编码,但是他们是不同的type,这一点很重要,也是为什么会有encode(编码)和decode( ...