page.title=通知 page.tags="notifications","design","L" @jd:body

开发者文档

通知用户

Android 4.4 及更低版本中的通知

视频

DevBytes:Android L 开发者预览当中的通知

通知系统可让用户随时了解应用中的相关和即时事件,例如来自好友的新聊天信息或日历事件。可将通知视作新闻频道,在重要的事件发生时提醒用户注意,或者当作日志,在用户未注意时记录事件—可在用户的所有 Android 设备上按需同步。

Android 5.0 新增内容

在 Android 5.0 中,通知在结构、外观和功能方面获得了重要的更新:

注:该版本 Android 的通知设计与之前的版本大不相同。 有关之前版本通知设计的信息,请参阅 Android 4.4 及更低版本中的通知

通知详解

本部分介绍通知的基本组成部分,及其在不同类型设备上显示的方式。

基本布局

所有通知至少要包括一个基本布局,包括:

利用 {@link android.app.Notification.Builder Notification.Builder}为之前版本平台创建的通知,其外观和行为方式与在 Android 5.0 中完全相同,唯一的变动在于系统为您处理通知的方式存在细微的样式变动。 如需了解之前 Android 版本通知设计的详细信息,请参阅 Android 4.4 及更低版本中的通知

手持设备通知(左)和穿戴设备(右)上同一通知的基本布局,带有用户照片和通知图标

展开布局

您可以选择让应用的通知提供多少信息详情。 它们可显示消息的前几行,也可以显示更大的预览图像。 额外的信息可以为用户提供更多上下文,并且,在某些情况下,可能允许用户完整阅读消息。 用户可进行两指缩放或执行单指滑移,在紧凑和展开布局之间切换。 对于单一事件通知,Android 提供了三种展开布局模板(文本、收件箱和图像),供您在应用中使用。 下图展示单一事件通知在手持设备(左)和穿戴式设备(右)上的外观。

操作

Android 支持在通知底部显示可选的操作。通过操作,用户可在通知栏中处理最常见的任务,而无需打开来源应用。这样可加快交互的速度,而通过结合使用滑动清除通知的功能,有助于用户专注于对自身重要的通知。

请慎重考虑要在通知中包含多少操作。 您加入的操作越多,用户就越无所适从。 请通过只包含最重要且有意义的操作,尽量减少通知中的操作数量。

适合在通知中使用的操作具有如下特点:

避免以下类型的操作:

您最多可以指定三个操作,每个操作由操作图标和名称组成。 通过为简单的基本布局添加操作,可以展开该通知,即使该通知没有展开布局,此方法仍然有效。 由于操作仅对展开的通知显示(否则会隐藏),因此要确保用户从通知调用的任何操作都可在相关联的应用中使用。

浮动通知

出现在沉浸式应用顶部的浮动通知(手机来电,高优先级)示例

收到高优先级通知时(见右侧),它会向用户短时间显示一个包含可选操作的展开布局。

之后,通知会缩回通知栏。 如果通知的优先级标志为高、最大或全屏,则会得到浮动通知。

浮动通知的范例

指导原则

个人化

对于他人发送的项目通知(例如消息或状态更新),请使用 {@link android.app.Notification.Builder#setLargeIcon setLargeIcon()} 包含此人的头像。 另外将有关此人的信息附加到通知的元数据(参阅 {@link android.app.Notification#EXTRA_PEOPLE})。

您通知的主图标仍然会显示,因此,该用户可将其与状态栏中显示的图标相关联。

显示触发通知的用户以及该用户所发送信息的通知。

在用户触摸通知的正文时(在操作按钮的外面),打开应用并定位至正确的位置,以便用户可查看通知中引用的数据并据此操作。 在大多数情况下,该位置是某个数据项目(例如消息)的详情视图,但如果是存档通知,那么也可能是摘要视图。 如果您的应用将用户带到应用顶层以下的任何位置,可将导航插入应用的返回栈,这样用户就可以通过按下系统返回按钮返回至顶层。 如需了解详细信息,请参阅导航设计模式中的“通过主屏幕小工具和通知进入您的应用”

正确设置和管理通知优先级。

Android 支持通知的优先级标志。该标志可以影响您的通知相对于其他通知出现的位置,并且可以帮助确保用户始终能在第一时间看到对他们最重要的通知。 在发布通知时,您可以选择下列优先级之一:

优先级

用法

MAX

用于重要和紧急的通知,告知用户属于时间关键型状况,或者必须予以解决方可继续执行某个特定任务。

HIGH

主要用于重要通信,例如包含用户特别感兴趣的内容的消息或聊天事件。高优先级通知会触发浮动通知显示。

DEFAULT

用于不属于此处所述其他任何优先级的所有通知。

LOW

用于您希望告知用户但不是很紧急的通知。 低优先级通知最好显示在列表的底部,这里正适合放置公共事项或无收件人姓名的社交更新之类的通知: 用户要求接收相关通知,但是这些通知的优先级永远不会高于紧急或直接通信。

MIN

用于上下文或背景信息,例如天气信息或上下文位置信息。最低优先级通知不会出现在状态栏中。 用户可在展开的通知栏上找到它们。

如何选择合适的优先级

DEFAULTHIGHMAX 是中断优先级别,在活动过程中有中断用户的风险。 为了避免打扰应用的用户,中断优先级仅保留用于以下通知 :

设置为 LOWMIN 的通知可能仍然对用户很重要: 很多通知(如果不是绝大多数)不需要用户立即注意,也不需要振动,但仍然包含用户选择查看通知时将会觉得重要的信息。 LOWMIN优先级通知的条件包括:

设置通知类别

如果通知属于以下预定义类别(参阅下文)之一,则为其分配相应的类别。 诸如通知栏(或其他任何通知侦听器)这样的系统 UI 项目,可使用该信息来进行评级和筛选决策。

CATEGORY_CALL

来电(语音或视频)或相似的同步通信请求

CATEGORY_MESSAGE

传入的直接消息(短信、即时消息等)

CATEGORY_EMAIL

异步群发消息(电子邮件)

CATEGORY_EVENT

日历事件

CATEGORY_PROMO

促销或广告

CATEGORY_ALARM

闹铃或定时器

CATEGORY_PROGRESS

长时间运行的后台操作的进度

CATEGORY_SOCIAL

社交网络或共享更新

CATEGORY_ERROR

后台操作或身份验证状态中的错误

CATEGORY_TRANSPORT

媒体传输播放控制

CATEGORY_SYSTEM

系统或设备状态更新。保留给系统使用。

CATEGORY_SERVICE

正在运行的后台服务的指示

CATEGORY_RECOMMENDATION

对于某个事件的特定、及时建议。例如,新闻应用可能会建议用户接下来可能想要阅读的新话题。

CATEGORY_STATUS

有关设备或上下文状态的持续信息

通知摘要

如果特定类型的通知已经在您的应用尝试发送同类型的新通知时挂起,可将它们合并到单个应用摘要通知中,而不要新建对象。

摘要通知会生成摘要说明,让用户了解特定类型的通知有多少处于挂起状态。

禁忌用法

建议用法

您可通过使用展开的摘要布局提供有关组成摘要的各个通知的更多详情。 此方法可让用户更好地了解哪些通知处于挂起状态,如果他们有足够的兴趣,还可在相关联的应用中阅读详情。

展开和收起的摘要通知(使用 InboxStyle

将通知设置为可选

用户应始终能控制通知。允许用户通过将某个通知设置项目添加至您的应用设置,禁用应用的通知或更改其提醒属性,例如警报声和是否使用振动。

使用不同的图标

通过扫一眼通知区域,用户可以了解哪些类型的通知当前处于挂起状态。

建议用法

查看 Android 应用已经提供的通知图标并为您的应用创建外观明显不同的通知图标。

建议用法

对小图标使用正确的通知图标样式,对操作图标使用相应的材料灯操作栏图标

建议用法

图标外观要简洁清晰,避免使用过于精细、难以辨认的图标。

禁忌用法

对小图标和操作图标设置任何附加的阿尔法通道属性(变暗或变淡);这些图标会有抗锯齿边缘,但是由于 Android 使用这些图标作为蒙板(即仅使用阿尔法通道),因此通常应以完全不透明的方式绘制图像。

禁忌用法

利用色彩将您的应用与其他应用区分开来。通知图标应该是纯白透明背景图像。

对通知 LED 施加相应的脉冲

许多 Android 设备都配有通知 LED,用于让用户在屏幕关闭时了解事件。 优先级为 MAXHIGHDEFAULT 的通知应让 LED 发光,而优先级较低的通知(LOWMIN)则不应让 LED 发光。

用户对通知的控制应延伸至 LED。当您使用 DEFAULT_LIGHTS 时,LED 将发出白光。 您的通知不应使用不同的颜色,除非用户明确对其进行了自定义。

构建用户关注的通知

要创建用户喜爱的应用,精心设计通知很重要。通知是应用的代言人,还可增强应用的个性化特征。 无用或者不重要的通知会给用户带来烦恼,或者由于过分分散用户的注意力而使其感到愤怒,因此请谨慎使用通知。

何时显示通知

要创建人们乐于使用的应用,就需要认识到用户的注意力和关注点是一种必须予以保护的资源,这一点很重要。 尽管 Android 的通知系统在设计上希望最小化通知对用户注意力的影响,但是仍然要重视通知会中断用户任务流程这一事实。在您计划通知时,要问问自己,它们是否足够重要,是否适合让用户中断手上的任务。 如果您不确定,可允许用户使用应用的通知设置来选择是否接收通知,或者将通知优先级标志调整为 LOWMIN,从而避免在用户做其他事情时分散他们的注意力。

时间敏感通知的示例

尽管行为良好的应用通常只在用户对其操作后才会发出通知,但在极少数情况下,应用通过无提示的通知形式打断用户也是值得的。

将通知主要用于时间敏感的事件,尤其是这些同步事件涉及其他用户时。 例如,传入的聊天属于实时同步通信形式: 另一个用户在主动等待您的回应。 日历事件是使用通知并引起用户注意的另一个好例子,因为事件已经迫近,并且日历事件通常涉及其他人员。

何时不显示通知

在其他很多情况下都不适合显示通知:

与通知交互

通知由状态栏中的图标指示,并且可以通过打开抽屉式通知栏进行访问。

触摸通知会打开相关联的应用并进入与通知匹配的详细内容。在通知上向左或向右滑动会将其从抽屉式通知栏中删除。

持续性通知

因播放音乐而持续显示的通知

持续性通知可让用户持续了解后台运行的进度。例如,音乐播放器在通知系统中通告当前播放的曲目,并继续进行播放,直至用户停止播放。 持续性通知也可为持续时间较长的任务(例如下载文件或视频编码之类的任务)向用户显示反馈。 用户无法手动从抽屉式通知栏中删除持续性通知。

媒体播放

在 Android 5.0 中,锁定屏幕不会为弃用的 {@link android.media.RemoteControlClient} 类显示传输控件。但是它确实会显示通知,因此每个应用的播放通知现在是用户在锁屏状态控制播放的主要方式。 此行为可让应用更好地控制显示哪些按钮,这样,无论是否锁屏,都可以为用户提供一致的体验。

对话框和 Toast

如果您的应用当前未显示在屏幕上,则不应创建对话框或 Toast。 对话框或 Toast 应仅限用于即时响应用户在应用内部采取的操作。有关使用对话框和 Toast 的进一步指导,请参阅确认和确知

排名和排序

通知属于新闻,因此基本以时间倒序显示,并且会特别考虑应用规定的通知优先级

通知是锁定屏幕的关键部分,并且在设备显示屏每次亮起时突出显示。 锁定屏幕上的空间有限,因此确定哪些通知最为紧急或最密切相关非常重要。 由于这个原因,Android 在处理通知时使用了更为精密的排序算法,考虑到以下因素:

为了充分利用此排序功能,请专注于您希望建立的用户体验,而不是拘泥于列表上的某个特定项。

Gmail 通知使用的是默认优先级,因此它们的顺序通常低于来自即时通讯应用(例如环聊)的消息,但是在有新邮件送达时会临时占位。

在锁定屏幕上

由于通知在锁定屏幕上可见,所以用户隐私是特别重要的考虑事项。 通知通常包含敏感信息,并且不一定需要让所有拿起设备并打开显示屏的人看到。

用户对显示在安全锁定屏幕上的信息的控制

位于锁定屏幕上的通知,具有用户解锁设备后可显示的内容。

在设置安全锁定屏幕时,用户可以选择从安全锁定屏幕隐藏敏感的详细信息。 在这种情况下,系统 UI 会考虑通知的可见性级别,从而确定哪些内容可以安全地显示出来。

要控制可见性级别,可调用 Notification.Builder.setVisibility(),然后指定以下值之一:

Android Wear 上的通知

通知及其操作默认会和穿戴设备桥接。开发者可以控制哪些通知会从手机桥接至手表,反之亦然。 开发者也可以控制哪些操作会进行桥接。如果您的应用包含无法通过单次点击完成的操作,则可以将这些操作隐藏在您的 Android Wear 设备通知中,或者考虑将它们连接至 Android Wear 设备应用,从而可让用户在其手表上完成操作。

桥接通知和操作

连接的设备,例如手机,可将通知桥接至 Android Wear 设备,从而将通知显示在此处。 与此相似,您也可以桥接操作,从而让用户可在 Android Wear 设备上直接操作通知。

桥接

不要桥接

为 Android Wear 设备定义的独特操作

有些操作只能在 Android Wear 上执行。包括以下情况: