Android 美学设计基础 <3>
本期接着对Android的美学设计的分享。
1.3 Light and shadows 光学与阴影
1.3.1 Light
在素材设计的环境中,我们会用虚拟的光来照亮UI界面。主灯光会产生尖锐,有方向的阴影。背景光会在各个角度产生分散的,柔和的阴影,我们叫背光阴影。

主光产生的阴影

背景光产生的阴影
1.3.2 光源
在安卓和IOS的设计中,阴影的产生,是因为处于不同仰角位置(z轴)的素材平面,对光源进行遮挡时产生的。这点上和web的产品不同,web的产品的阴影,都是只是在y轴上来表现阴影效果。

我们结合直射光+散射光时候的阴影效果。
1.3.2 阴影
阴影可以协助我们发现 一个素材组件的深度,运动的方向以及表面的边缘。一个表面的阴影,是由他自己的仰角以及他和其他平面的关系来共同决定的。
阴影的应用
首先,在同一个产品中,仰角和对应的阴影的对应关系,应该保持一致。

接着 仰角值越大(离用户的相对位置越近),产生的阴影范围也就越大

在我们的界面设计中, 如果我们不使用阴影这个元素,那我们所有界面的移动,都是默认在一个仰角进行的。
2. Layout 布局
2.1 理解布局设计:我们通过使用统一的元素和间距,使得我们的布局设计在不同的平台和环境以及屏幕大小都可以保持一致。
2.1.1 布局的使用
a. 可预见性
UI界面应该是可以直接表现的,并且可以预测的布局(统一的UI区域以及空间组织的方式)

b. 一致性
布局上,我们应该使用一致的网格,标线和填充形式

c. 回应
对于来自用户,设备,和屏幕元素的输入,布局需要的是可以适应的并且有反馈的。
2.1.2 结构
在布局的设计中,各个部件应该在视觉上看起来是均衡的。一般来说我们都使用8dp的网格来座位最小的一个测量单位,对于logo那样的特别小的组件,我们一般也可以用4dp的网格。

2.1.2 Pixel Density
屏幕的PD和分辨率对于不同的平台和设备来说都是不同的。对于不同的设备,我们可以用这种灵活可变的方式在达到最好的视觉呈现效果。
计算pd
首先,在1英寸的品目范围内的像素点的数量我们叫像素密度。高密度的屏幕,当然在一个固定尺寸中的像素点会多于低密度的屏幕。所以一个固定像素点的图片,在高精度的屏幕上,会显示的视觉效果上更小一点。


密度的独立性
密度的独立性指的是虽然屏幕的像素点密度不同,但是图标依然显示的统一的大小。效果如下图。

关于Android的PD
When developing an Android app, use dp to display elements uniformly on screens with different densities. A dp is equal to one physical pixel on a screen with a density of 160.
当我们开发一个安卓app的时候,我们使用dp来确保我们的元素在不同的密度屏幕上显示的是统一的。一个dp等于的绝对值的大小dpi/160
dp = (width in pixels * 160 )/screen density
|
Screen physical width |
Screen density |
Screen width in pixels |
Screen width in dps |
|
1.5 in |
120 |
180 px |
240 dp |
|
1.5 in |
160 |
240 px |
|
|
1.5 in |
240 |
360 px |
针对文字信息我们一般用scalable pixels(sp), 这里用户可以调节字体来控制文字信息的显示大小。
pd in IOS
逻辑分辨率
ios设备是通过逻辑分辨率来控制显示密度,他们来测量没一个点里面的单位,举个例子, 如果你现在为iphone x设计一个元素, 你可能选择一个逻辑分辨率的大小为 375 * 812个点。接着,在这个给定后,图形处理硬件会自动把这个组件填充到1125 * 2436的屏幕中。
Android 美学设计基础 <3>的更多相关文章
- Android 美学设计基础 <1>
在做原型的时候,和设计师交流的过程中,发现在设计安卓交互的过程中,其实是存在一些基本规则的.那这些规则,可以保证第一应用美观,第二不会出现反人类的开发难度,第三,用设计师的话说就是可能会有“最好的体现 ...
- Android 美学设计基础 <2>
我们接着上期的项目进行分享. 1.2.2 Elevation (仰角) 仰角只的是不同的素材块在Z轴上的选对位置 仰角的测量方式 这里只的是两个平面在z的距离,记住我们默认每个平面都是1dp的厚度 1 ...
- Android程序设计基础作业目录 (作业笔记)
Android程序设计基础 • [目录] 第1章 Android程序入门 >>> 1.2.4 安装并配置 Android Studio 开发工具和 Genymotion 模拟器. 1 ...
- Android程序设计基础 • 【目录】
章节 内容 实践练习 Android程序设计基础作业目录 (作业笔记) 第1章 Android程序设计基础 • [第1章 Android程序入门] 第2章 Android程序设计基础 • [第2章 基 ...
- Android程序设计基础 • 【第1章 Android程序入门】
全部章节 >>>> 本章目录 1.1 Android 平台介绍 1.1.1 Android 简介 1.1.2 Android 平台的发展 1.1.3 Android 平台架 ...
- Android与MVC设计模式
写在前面,之前做过一段时间移动开发,后来因为工作原因搁浅了,最新重新拿起Android权威编程指南学习,顺道做个学习笔记. 首先呢,我想说无论是计算机科班出身还是培训班出身,都听说过高内聚低耦合以及M ...
- 赵雅智:android教学大纲
带下划线为详细内容链接地址.点击后可跳转.希望给大家尽一些微薄之力.眼下还在整理中 教学章节 教学内容 学时安排 备注 1 Android高速入门 2 Android模拟器与常见命令 3 Androi ...
- 详解 “Android UI”设计官方教程
我们曾经给大家一个<MeeGo移动终端设备开发UI设计基础教程>,同时很多朋友都在寻找Android UI开发的教程,我们从Android的官方开发者博客找了一份幻灯片,介绍了一些Andr ...
- Android Develop 之 Ddevelop WorkFlow Basics
Android应用程序的开发流程一言以蔽之,可以用一图五步概括.一图如下. 第一步:安装.安装开发环境,包括JDK,Android Studio,SDK Manager(通常下载Android Stu ...
随机推荐
- On Line Tools
1)在线生成证书请求 https://www.icewarp.com/support/online_help/3206.htm 2)在线文件共享 https://reep.io/ https://sn ...
- git保护进程
https://github.com/Mattiwatti/PPLKiller 去掉进程保护内核级
- Java 8 Stream API
Java 8 Stream API JDK8 中有两大最为重要的改变.第一个是 Lambda 式:另外 Stream API(java.util.stream.*) Stream 是 JDK8 中处理 ...
- Mockplus是如何节省你的原型时间的?
还在用老牌原型工具一点点绘制产品原型吗?还在为实现一个满意的交互而绞尽脑汁吗?还在为无法和用户高效沟通而发愁吗?朋友,现在是快速原型的时代了.时间不等人,当你精雕细琢完成产品启动页的时候,别人的原型已 ...
- bitnami redmine svn配置
采用bitnami 方案安装redmine svn服务器端会自己进行安装 1.创建版本库 首先进入remine安装目录的subversion/bin目录,例如我的安装目录是“/opt/redmine/ ...
- 2018.09.16 loj#10241. 取石子游戏 1(博弈论)
传送门 好像是某年的初赛题啊. 有个很显然的结论. 当n" role="presentation" style="position: relative;&quo ...
- 2018.08.30 bzoj4318: OSU!(期望dp)
传送门 简单期望dp. 感觉跟Easy差不多,就是把平方差量进阶成了立方差量,原本维护的是(x+1)2−x2" role="presentation" style=&qu ...
- LA 4329 Ping pong (树状数组)
题意:从左到右给你n个不同的数值,让你找出三个数值满足中间的数值在两边的数值之间的个数. 析:题意还是比较好理解的,关键是怎么求数量,首先我们分解一下只有两种情况,一个是左边<中间<右边, ...
- java中如何通过Class获取类的属性、方法、注释
public static String getPKName(Class clazz) { Field[] fields = clazz.getDeclaredFields(); for (Field ...
- Spring MVC 的@RequestParam注解和request.getParameter("XXX")
在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取.这里主要 ...