开发者文档

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 个选项,将它们分组。

  • 使用上面的设计模式指导,使用户不会面临陡峭的学习曲线。

  • 选择安全、中性、适合大多数用户的默认值。

  • 为每个设置提供一个清晰而明确的标题,并且编写合适的副标题内容。