发表于 wenjianhua

Android UI Design Tips是Google官方开发者博客上发布的一组PPT,旨在指导设计和开发者如何构建一个卓越的应用程序。

既然是Android他母亲写的,了解自己儿子的肯定是自己的父母嘛。

没错,这几组PPT确实很精品。

因此在网上找了些翻译资料,大多都只翻译了前面一小部门,后面的我准备参考其它人的只言片语,勉强翻译翻译,第一次翻译,水准不高,将就看吧。

开始


为什么我们要关心 UI?

如果一个应用软件具备良好的使用体验,那么:
1. 用户所感知的软件质量越好
2. 将给你更高的评分
3. 软件会有更好的排名
4. 更多人购买或安装你的软件

总之,特别是移动应用,UI是一个软件成功的关键。

接下来将讨论如下内容:
1. 应该遵循和不应该遵循的设计原则
2. 设计理念和各种考虑因素
3. 你必须使用的 UI 框架特性
4. 新的 UI 设计模式
5. 图标和准则

1. 应该遵循和不应该遵循的设计原则


错误的设计原则
1. 不要照搬其他平台上的 UI 设计。应该让用户感觉是在使用一个真正的 Android软件,在你的品牌显示和平台整体观感之间做好平衡。
2. 不要过度使用模态进度条和确认对话框(文:意思是,不要经常弹出那些挡了用户所有操作的对话框或进度框。)
3. 不要使用固定的绝对定位布局。(文:AbsolutLaout,软件中你若使用此布局方式,意味着,市面上有多少种分辨率手机,你就要写多少份布局文件)
4. 不要使用 px 单位,使用 dp;如果是文本,使用 sp 。(文:因为Android产品众多,各自分辨率的手机充斥市场。如果使用和分辨率相关的单位(px),很可能导致在其它分辨率的手机上看到你意料之外的Size效果。而dp(或者dip)和sp是和屏幕密度相关的(其实是根据320×480为标准计算的))
5. 不要使用太小的字体。


正确的设计原则

1. 所有资源都要针对高分辨率屏幕创建

2. 需要点击的元素要够大

3. 图标设计要遵循 Android 的准则

4. 要使用适当的间距(margins, padding)

5. 要支持 D-pad 和 trackball 导航(文:我猜测是“触摸屏”和“轨迹球”,“轨迹球”相当与PC上的鼠标,当用户滑动轨迹球去指向目标事物时,目标事物需要做出回应。说好懂点,相当于当你的鼠标划过一个链接或当你的鼠标悬停再一个链接上的时候,链接通常会加高亮。如果说“触摸屏”只需要关注用户手指按下的动作,那么“轨迹球”还要关注“控件”被选中的动作。)
6. 要正确管理活动(activity)栈(文:activity的lanchmode属性能够设置activity在栈中的活动状态,例如栈内单例或者栈顶单例或者总是新建等。决定于你是否希望用户重新回到上一个(或更早)的界面,看到“最初的”还是“上一次”的数据。前者通常意味着丢弃用户上一次填写的数据、从数据库查询更新的数据等等。例如华录益康项目中,当用户按HOME键回到桌面,然后点击状态栏(桌面顶部)将出现一个“小人”图标,用户点击它将会回到应用程序中来,对于“主界面”或者“图表界面”来说,就是使用的看到“上一次”数据的方式。取决与他们的lanchmode的设置)。
7. 要正确处理屏幕方向变化。(文:除非万不得已,否则建议不要强制横屏或竖屏。躺在床上玩手机的人知道,单手举在空中久了,手会酸疼,这时候希望横过屏来双手操作。双手举久了,就想测过身来躺并换成单手举着。总之,人类这个生物永远不可能找不到让自己永远满意的舒服的姿势。因此,保险的做法是,将他任何的使用姿势都考虑在内。
可是我悲哀的发现,就算我们做到了支持自动横、竖屏,人类还是不会满足。因为当你侧身单手使用手机的时候,就算竖着拿手机(对于正侧身的人来说,手机是竖着的。这时候人的意愿应该是想竖屏显示内容),可是因为手机方向对于地球来说,已经横过来了,因此,手机内容会变成横屏。当我使用某款电子书软件时,这个问题可是烦透我了(我不得不偏着头看书),直到用了”QQ Reader”,心情一下子无比欢畅,仅仅因为他支持 “总是横屏或总是竖屏” 的设置。于是我就这样成了 “QQ Reader” 的忠实用户。
迷住一个男人,只需要女人一个妖媚的眼色;迷住用户,有时候也只需要一个很贴心的细节。)
8. 要使用主题/样式、尺寸和颜色资源来减少界面冗余。
(例如,你的软件(甚至同一个界面)里有很多文本框,每个文本框的样式都差不多甚至一样。那么你是否每个都要设置一堆啊?如:
<EditText
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:layout_marginTop=”5.0dip”
android:layout_marginRight=”5.0dip”
android:layout_marginBottom=”5.0px”
android:background=”@drawable/login_edit”
android:paddingLeft=”35.0sp”
android:singleLine=”true”
android:saveEnabled=”true”
android:inputType=”text”
/>
还是说这样稍微好点呢(将修饰成Style里,让Style重用):
<EditText style=”@style/Style_Edit”/>
假如说你的软件里有二十个这样的文本框,你只需复制这一行代码二十次就可以了。
还有人会犹豫说,我的二十个文本框另外还有些细节的区别怎么半?
1. 为每种文本框都写一个Style 。
2. 抽象出几种间的共同点,用
<style parent=”@style/Base_Edit”>…差异化内容</style>
3. 假如差异的内容并多并且不常见的化,还有个小窍门。例如:
<EditText style=”@style/Style_Edit”
android:inputType=”password”
/>
这样就将,Style为普通文本框修改成了密码框。秘诀在与android解析XML应该用的pull解析器,pull解析器的特征就是写在前面的属性将被先解析到(先触发事件),因此,android:inputType=”password”因为被写在了后面,就将覆盖Style里面的内容。这样也完成了样式差异化。)

9. 要和视觉与交互设计师合作

2. 设计理念和各种考虑因素


设计理念
1. 干净而不过于简单(文:让我想到了一句话–美观是用户体验的一种表达形式,而不是为了美观而美观。)
2. 关注内容而非修饰
3. 一致,吸引人,少量简洁的变化
4. 使用云端服务(同时在 PC 桌面和手机上同步用户使用场景)来加强用户体验

优秀界面的设计准则
1. 关注用户
2. 显示正确的内容
3. 给予用户适当的回馈
4. 有章可循的行为模式
5. 容忍错误

下面将祥述以上五点:


关注用户
1. 了解你的用户(年龄,技能,文化,是否有身体障碍,对应用的需求,使用的设备,何时何地如何使用设备)
2. “用户优先”的设计心态 (用户通常是任务导向的)
3. 更早、更频繁的由真实用户来测试

显示正确的内容
1. 最常用的操作用户应该立即可以看到并且使用
2. 次要功能可以放到菜单里面


给予用户适当的回馈
1. 交互式的 UI 元素最少需要反映出 4 种不同的状态 (default,disabled,focused,pressed)(文:推荐Google自家的 Google Music Android客户端)
2. 保证操作的结果是清晰可见的。(文:这个我推荐Excel)
3. 多给予用户进度提示,但是不要干扰他们当前的操作。
(文:其它常见的替代方式:
1. 常驻通知栏,下划通知栏能看到当前进度。需要学习RemoteView。
2. 在Title右测显示小的圆形进度条(一直旋转那种)。如Gmail等。
3. 像Windows的中的迅雷下载一样,置顶显示一个小图标。推荐体验一下UC迅雷,感觉不错。WindowManager的针对整个屏幕的addView和removeView机制能够实现此效果。
4. 像UC浏览器那种,屏幕顶部显示一个横向的进度条。



有章可循的行为模式
1. 行为模式遵循用户的期望(正确的操作活动栈,显示用户期望看到的信息和动作)
2. 使用合适的方式来加强功能可见性(可点击的元素就应该看起来是可以点击的)
3. 如果用户完成一项任务需要复杂的操作,重新思考你的设计!!!


容忍错误
1. 只允许有意义的操作(适当禁用一些 UI 元素)
2. 尽量减少不可回退的操作
3. 允许回退(undo)比使用确定对话框更好(实际上,应该尽量少用确定对话框,它对用户是一种干扰)


如果错误是可能发生的,那它就一定会发生。
- Donald Norman《The Design of Everyday Things》作者(文:《设计心理学》,关于Donald Norman的详细情况在这:http://www.techcn.com.cn/index.php?doc-view-134543.html)



设计上的考虑因素
1. 屏幕的物理尺寸
2. 屏幕密度
3. 屏幕的方向(竖向和横向)
4. 主要的 UI 交互方式(触屏还是使用 D-pad/trackball)
5. 软键盘还是物理键盘
6. 了解不同设备之间的相异之处是非常重要的
7. 阅读 CDD(兼容性定义文档),了解设备可能的差异
8. 了解屏幕尺寸和密度分类(点击这里阅读)


原文见:http://blog.koonet.com/?p=95

更多相关文章

  1. Android对话框的高级设置《一》设置对话框按钮的图像和在内容文
  2. Android——Android实现多级菜单联动操作
  3. [置顶] android用户输入系统详细说明
  4. Android 怎么向打开的网页中自动填充用户名和密码?
  5. 关于Android WebView内容不同屏幕兼容处理
  6. Android使用ApacheFtpServer实现Ftp服务器(增加用户验证)
  7. Android探索之旅(第三十六篇)Android中用户反馈需要开发?不存在的
  8. Android通过JNI实现与C语言的串口通讯操作蓝牙硬件模块

随机推荐

  1. Android(安卓)- Android(安卓)Studio 安
  2. Android使用RecyclerView实现列表功能
  3. Android图表应用分享
  4. Android(安卓)倒计时功能,完美解决系统时
  5. android 线程大集合
  6. Android(安卓)Activity的四种加载模式
  7. android 自定义view 实现定制二维码扫描
  8. Android中startService的使用及Service生
  9. Android的电话功能介绍
  10. Android(安卓)跨进程通信(IPC)机制的探索与