开发者文档
Settings
用户可以在设置屏幕中调整偏好,改变应用的行为。设置可以让用户:
- 不用在某些重要的时刻被同样的问题一遍又一遍的打断。通过设置设定好在特定情况下的默认操作。(参考“设计原则”中的 帮哥做决定,但让哥来拍板)
- 感觉很自在并且尽在掌控。(参考“设计原则”中的 展现哥的个性)
布局和结构
在“更多操作”菜单中提供设置按钮
设置按钮在 UI 中不是很重要,因为不是经常用到。即使 操作栏 上还有空间,也不要把设置按钮放在操作栏上。始终将设置放置在“更多操作”菜单中的帮助旁边。
不要把什么都放在设置里
因为设置总是在主界面之外,所以似乎放再多的东西也不会挤占 UI 的空间。嗯,听起来是个不错的消息,但是还是要注意一下。
设置看起来是一个堆放各种东西的地方,就像杂物间里面塞满了东西。你不会在那里花很多时间,所以似乎可以不用去仔细考虑项目的排列和摆放。用户虽然很少访问设置,但是仍然对于设置屏幕抱有很高的期待。过多的设置项表示用户要做出大量的选择,太多的选择则会使人失去方向。
所以不要让用户做出高难度的选择,而且仔细考虑是不是需要一个设置。对于设置中的每一个选项,都应当按照下面的流程图仔细考虑:
如果你还是有一大堆设置项,那么分组是个好选择
人类能够短时间内记住的条目一般是 7±2 项。如果你给出了个超过 10 条条目的设置 (在通过上面的流程图筛选后),用户会觉得难以浏览、理解和对它们做出选择。
你可以将这些设置分组,把长列表变成短列表。同一组中相似的设置以下面的某一种方式排列:
- 1. 放在同一个分隔符下
- 2. 放在另一个屏幕中
你可以任意组合使用上面两种分组方式来合理组织应用的设置项。
例如,Android 设置应用的主屏幕,每一个设置项都有对应的设置子屏幕,并且都是通过分隔符分组的。
分组不是一门精确的科学,但是基于应用中设置的数量还是有一些指导方法可以参考。
少于 7 项
不用分组了,否则用户会觉得更复杂了。
8 到 10 项
试着通过一两个分隔符分组。如果有的设置看起来比较独立,和其他的没有什么联系,那么可以按照以下的方案分组:
- 如果是比较重要的设置,直接把它们放在设置屏幕的最顶端。
- 否则在最下面用一个叫“其他”的分组摆放它们。
11 到 15 项
类似上面的规则,试着用 2 到 4 个分隔符分组。
通过以下方法来减少分组数量:
- 如果有多于 2 个设置是给高级用户的,那么在主设置屏幕中放置一个“高级”按钮,将这些设置放置在点击后出现的子屏幕中。在“更多操作”中放置一个名为“高级”的条目以便导航。
- 找出“配对”的设置,尽量按照下面的“设计模式”将它们合并。例如你可以把两个相关的设置 (之前使用复选框) 合并为一个单选设置。
多于 16 项
如果你可以把 4 项以上的设置组合在一组中,可以将它们放置在子屏幕中,在主屏幕用一个按钮连接到那里,这样可以有效的减少主屏幕中的设置项。
设计模式
复选框
只有选中或者不选中两种状态的设置。
单项选择
设置给出多个离散的可选值,但是用户只能选择其中的一个。
滑块
用户在一个连续的可选值之中选择一个的设置。
日期/时间
用户选择一个日期或者时间的设置。
子屏幕
将用户带入更复杂的设置页面的一个或一系列子屏幕。
- 如果只有一个子屏幕,应当使用和进入该屏幕的按钮相同的标题。
- 如果进入的是一个向导的第一页,则使用第一步的名称作为标题。
列表子屏幕
列出包含一个等价条目列表的一个设置或设置类别。
在标题中显示条目的名称,副文字标题显示当前的状态。与该列表相关的操作显示在操作栏而不是列表中。
主开关
用于控制整个设置类别的开关。
开关应当作为第一个条目被放置在子屏幕的操作栏上。如果关闭开关,条目列表消失,显示一段提示文字,所有需要打开开关才能进行的操作全部都显示为禁用状态。
你也可以将开关放置在进入列表子屏幕的按钮旁边。但是要注意的是,只有在用户一般只是进行打开/关闭开关的操作,而不需要进入子屏幕的情况下才这么做。
独立开关
当设置需要更详细的描述,而不仅仅只是一个开关的时候,使用独立开关。
开关只有在用户触摸进入子屏幕后才能看见,这样保证用户可以看到描述文字后再进行开关操作。描述文字放置在子屏幕标题栏下面。
例子中,Android Beam 默认是打开的状态,但是我们使用了独立开关,因为用户可能不知道 Android Beam 到底是干什么的,在子屏幕中我们可以提供详细的描述,而不仅仅是一个开关。
相互依赖
一个设置的可用状态依赖于另一个设置的值。
将设置放置在其依赖设置的下面。如果依赖项被禁用,显示“不可用”,如果需要,显示一个简要的说明。
如果有多于 3 个设置依赖同一个选项,考虑使用由主开关控制的子屏幕,以便你的主设置屏幕不会被许多禁用的条目所弄乱。
默认值
仔细考虑设置的默认值。因为每个设置都会影响应用的行为,默认值将会影响用户对应用的第一印象。尽管用户可以调整设置,但是他们仍然希望应用能够提供一个正确的起始状态。你可以通过以下的步骤来考虑默认值:
- 如果没有默认值,用户最倾向于选择哪个值?
- 哪个值是中性的?
- 哪个值最没有风险,最没有争议,最不过分?
- 哪个值消耗最少的电量和最少的数据流量?
- 哪个值最符合设计原则?不要弄丢哥的东西
- 哪个值最符合设计原则?只在重要的时候打断哥
写作指导
标题要清晰简明
写出一个好的标题是有难度的,因为空间有限,你只有一行而且很短的宽度。按照下面的指导,帮助你写出简明、有意义、能够快速浏览的标题:
- 用一般句式书写标题 (例如只有第一个字母和特殊名词才大写)
- 不要在标题中使用指导性动词,比如“设置”、“修改”、“编辑”、“管理”、“使用”或者“选择”,因为用户已经知道他们可以在设置中做出这些调整。
- 不要在标题中使用“...的设置”,因为这就是设置啊,不需要再说一遍。
- 如果是一组设置中的一项,不要在标题中重复组名称或者子屏幕标题。
- 不要使用否定词作为标题开头。
- 不要使用特别技术的词语,除非您的目标用户都能够理解这个术语。尽量使用简单的动词和名词。
- 不要提及用户。比如开关通知的设置,标题应当是“通知”,而不是“提醒我”。
当您确定好标题后,请在 LDPI 手持设备 上测试一下,确保在任何设备上都能够正确显示。
副文字标题是用来表示状态,而不是用来写详细描述的…
在 ICS 系统发布以前,我们喜欢在副文字标题中写一些详细的描述信息。但是从 ICS 开始,副文字标题用来描述当前的状态。
Screen timeout |
---|
Adjust the delay before the screen automatically turns off |
Sleep |
---|
After 10 minutes of activity |
屏幕超时 |
---|
调整屏幕自动锁定前的延迟 |
休眠 |
---|
无操作 10 分钟后 |
在副文字标题中描述状态可以:
- 让用户立刻了解设置的效果。Users can see at a glance what the current value of a setting is without having to navigate any further.
- 符合设计原则的 保持简洁 要求,这一点对于用户很重要。
…除非它是一个复选框
需要特别注意的一个特例是复选框。此时,副文字标题用于详细描述,而不是状态描述。在复选标题下面描述状态是没有必要的,因为复选框本身即已提示之。在复选标题下面进行详细描述是适当的是因为——不像其他控件——它没有办法导航到一个对话框或者一个子屏幕,所以没有地方放置额外信息了。
也就是说,如果复选框的标题已经足够描述设置的目的,那么就没有必要再提供更详细的描述了。
按照以下的指导,编写复选框的描述信息:
- 保持一句话之内,并且不在结尾使用标点符号。
- 表达在设置已经选中的情况发生了什么,并且使用一个命令语句。比如: "Allow data exchange",而不是"Allows data exchange"。
- 注意不要使用标题中已经重复出现的词语。
- 不要提及用户,除非是理解设置所需。
- 如果必须要提及用户,请使用“您”而不是“我”。Android 此时在向用户表达信息,而不是代表用户。
写作示例
以下的例子是我们在 ICS 设置应用中一些修改过的标题和副文字标题。
Use tactile feedback |
Vibrate on touch |
使用触觉反馈 |
触摸时震动 |
在这个复选框中,我们不采用“使用”一词,并且重新编写了标题,使其更容易被用户理解。
Screen timeout |
---|
Adjust the delay before the screen automatically turns off |
Sleep |
---|
After 10 minutes of inactivity |
屏幕超时 |
---|
调整屏幕自动锁定前的延迟 |
休眠 |
---|
无操作 10 分钟后 |
这个单项选择中,我们使用更友好的词语作为标题,并且用当前的状态代替了详细描述。并且我们不仅仅显示当前的值,还加上了些描述信息,防止用户以为是“休眠 10 分钟”。
Change screen lock |
---|
Change or disable pattern, PIN, or password security |
Screen lock |
---|
Pattern |
修改屏幕锁定 |
---|
使用图案、PIN 或密码锁定屏幕 |
屏幕锁定 |
---|
图案 |
这个设置将用户导航到一个子屏幕,选择屏幕锁定的方式。我们不再采用“修改”一词,并且使用当前选择的值代替了详细描述。如果用户没有选择值,副标题将显示“无”。
NFC |
---|
Use Near Field Communication to read and exchange tags |
NFC |
---|
Allow data exchange when the phone touches another device |
NFC |
---|
使用近场通信读取和交换标签 |
NFC |
---|
当手机和其他设备触碰时,允许数据交换 |
这个复选框的标题,我们之前使用了过于技术性的描述,但是最后仍然保留了“NFC”作为标题,因为: (1) 我们找不到更加简明且正确的替换词语 (2) 在未来的几年中,用户将会普遍了解这个术语的意思。
不过,我们重写了详细描述。让它不再像以前一样充满了技术细节,而是更多地描述 NFC 的用途。我们不再描述 NFC 代表的意思,因为对于大多数用户来说根本没有意义,而且还占地方。
检查清单
-
确保每个设置项都值得放置在设置屏幕中。
-
如果您有多于 7 个选项,将它们分组。
-
使用上面的设计模式指导,使用户不会面临陡峭的学习曲线。
-
选择安全、中性、适合大多数用户的默认值。
-
为每个设置提供一个清晰而明确的标题,并且编写合适的副标题内容。