浅析Android 4.0的通知系统(附Android 4.0设计指南全文翻译)

通过手机的通知系统,可以将应用程序的一些重要消息告知给用户。流畅、舒适、友好的应用程序离不开精心设计的消息提醒机制。但是并不是所有的通知都是用户想看的,否则只会给用户造成骚扰,所以要谨慎使用通知。

在对《Android Design》进行翻译时发现:Android 系统已经提出了一些关于通知消息的设计建议,故在此分享给大家。

一、何时使用通知?

通知主要用于对时间敏感(Time Sensitive)的事件,尤其是涉及他人(Involve another person)的同步事件。例如下面的 Gtalk 和日历发出的通知就是时间敏感,且与人相关的事件。

那么什么时候又不应该使用通知呢?官方的建议是:

不直接针对用户的,或不紧急的信息。例如 SNS 中与用户没有直接关系的新鲜事。Path 可能就犯了这个错误。正显示在当前屏幕的信息也不必创建一个通知。即正在聊天的时候,就不必再创建关于聊天消息的通知了。系统可以自己完成而无需用户操作的简单动作,例如保存、同步或者是更新应用程序等。如果发生错误了,但是应用程序可以快速自我恢复,此时也不必用通知去打断用户,甚至都可以
不用让用户知道这个错误。对于用户不能手动启动或停止的服务,也不必使用通知。不要为了让用户对你的品牌记忆深刻而创建多余的通知,否则只会让用户反感。想让用户对你的应用程序保持注意力并且提供少量内容的
最好方式是提供小部件(widget)给用户,让用户可以将它放到首页。

二、通知的设计指南

1. 使其私有化

其他用户发过来的通知应该在通知里包含用户的头像(Icon/Photo),还要显示通知的标题(Title)、消息内容(Message)、时间戳(Timestamp),以及应用程序的图标(Secondary Icon)。

2. 合并同类通知

如果一个应用程序发出了多个相同类型的通知,而且这些通知都还没被处理的话(被处理的通知会被移出通知抽屉),那么请将相同类型的通知合并为一个。

合并后的通知会有一个总结性的描述,并且能让用户知道一共合并了多少条通知(Number Pending)。

3. 对时间敏感事件的时间戳

默认的系统通知会在通知右上角打上时间戳,如果你认为显示时间戳对你的通知是没有意义的,那你可能就要重新考虑是否值得为这条消息创建一条通知了。如果这条通知确实足够重要,再决定是否不显示时间戳。

常见的需要显示时间戳的通知是通讯通知,如 Email、短信、聊天消息这种,用户需要通过时间戳来理解消息的上下文。

4.  通知相关的导航机制

如果用户点击了一条通知,此时应该将相关的应用程序打开到可以对通知中提到的内容进行操作的状态。但如果用户点击了一个合并的通知,应该去到列表页面(内容页的上一层级),后面第三部分会详细阐述。

5.  自我清理

有些通知会在某个时间点出现告知用户一些相关的信息和提示,但是如果过了那个时间点,这个通知可能对用户来说就不重要了,此时就应该考虑自动删除这条通知。

同样的,用户查看过的聊天消息或邮件,也应该让用户不必手动操作就移除这些通知。

6.  为通知提供预览

提供一段简短的文本作为通知的预览可以让用户大致了解通知的内容,从而帮助用户决定是否立刻查看该通知。

7.  让用户决定是否显示通知

用户可能对频繁出现的通知感到厌烦,所以应该让用户决定是否显示通知。因此,在应用程序的设置中应该让用户可以取消通知。

8.  使用不同的图标

为了让用户在通知栏看一眼就能知道是哪个应用程序发出的通知,应该采用有自己特色的图标。所以在设计应用程序的图标的时候,应该注意与其他 Android 应用的通知图标有比较明显的区别。

但需要注意的是不要用颜色来区分,因为通知图标通常都是黑白的。

三、通知的导航机制

1.  单条通知与合并通知

如果用户点击了一条通知,此时应该将相关的应用程序打开到可以对通知中提到的内容进行操作的状态。例如用户收到一封新邮件的通知,用户点开该通知后应该去到这封邮件的内容页。

因为同类通知会被合并,如果用户点击了一个合并的通知,应该去到列表页面(内容页的上一层级)。在下面的例子中,用户点开一条合并的新邮件通知后,进入了收件箱界面。

2.  间接通知

如果应用程序需要同时展示多个事件的信息,可以使用一条通知将用户指引到一个中间界面。这个界面会展示这些事件,并为用户提供进入应用程序的入口。这种类型的通知被称为间接通知。

例如一个用户在 Gmail 中收到了 Calendar 发出的一条间接通知。点击这条通知后打开一个中间界面(calendar interstitial),这个界面下显示了几个事件的提醒,在这个界面点“返回”键会回到 Gmail,但是如果用户点击了某个事件提醒,就会离开这个中间界面并打开 Calendar 应用程序以显示这个事件的详细内容。在这个事件的详细内容的界面下,点“向上”和“返回”都会去到 Calendar 应用的首页。

在间接通知的中间界面点“返回”会回到触发该通知的界面,返回路径中不会被插入其他界面。一旦用户通过中间界面进入了应用程序,“向上”和“返回”的逻辑就与标准通知一样了:在应用程序之间进行导航,而不会返回到中间界面。

关于间接通知的详细内容请查看百度 MUX 翻译的《Android Design》的模式 Patterns—-导航 Navigation 章节。

3. 弹出通知

弹出通知会绕过抽屉通知直接出现在用户面前。一般情况下很少使用,只在需要及时地反馈并且必须打断用户的场合下才会使用。例如 Talk 应用使用这种形式的通知来提醒用户有好友邀请他加入视频聊天,因为这个邀请会在几秒后自动失效。

对于导航行为,弹出通知严格遵循间接通知的中间界面的导航逻辑。点“返回”会关闭弹出通知。如果用户从这条弹出通知进入了发出通知的应用程序,“向上”和“返回”的逻辑会与标准通知的逻辑保持一致,在应用程序内进行导航。

关于间接通知的详细内容请查看百度 MUX 翻译的《Android Design》的模式 Patterns—-导航 Navigation 章节。

四、通知的相关交互

1. 通知抽屉

默认情况下,待处理的通知是以图标形式显示在状态栏中,从屏幕上方向下滑即可打开通知抽屉。

最近的通知排在最前面,点击一条通知会将其应用程序打开到与这条通知相关的界面。

在一条通知上向左或向右横划即可移除该通知。

在 Android 4.0 的平板电脑中,通知栏则被集成到底部的系统栏里,在通知区域的任意位置点击即可打开通知抽屉。

2. 进行中的通知

有一些通知是让用户了解后台正在运行的进程。例如正在播放的音乐播放器、正在后台运行的省电程序、正在保护系统的安全软件等。另外也可以对下载上传、视频编码这种持续时间较长的任务提供反馈。这种进行中的通知是不可以被移除的。

3.  Dialog 和 Toast 用作反馈

如果某个应用程序没有在当前屏幕运行,它就不应该弹出对话框(Dialog)和提示条(Toast)。对话框和提示条应该是用户在当前应用程序 下执行操作时,用来提供即时的操作反馈的。比如对话框可以让用户知道某个操作的危险后果,而提示条可以让用户知道某个操作已成功执行。

五、总结

在 Android 平台设计应用程序的通知消息时应该明确在哪些场景下使用通知;不同的场景显示什么类型的通知。在设计的时候还要注意通知的私有化、导航逻辑、清理机制、同 类通知的合并、图标的设计等。为避免对用户造成骚扰,还应该在应用程序的设置中增加对是否显示通知消息的设置。

从较早版本的 Android 系统开始,就具备了比较成熟的通知系统,新版 iOS 系统也参考了类似的设计。所以充分利用 Android 的通知系统,一定可以让用户对你的应用程序了如指掌。

另附上MUX翻译的最新版《Android Design》,欢迎大家下载阅读。

译文:http://mux.baidu.com/img/97/AndroidDesign-BaiduMUX.pdf
原文:http://developer.android.com/design/

来源:http://mux.baidu.com/?p=3183

时间: 2024-08-02 19:16:12

浅析Android 4.0的通知系统(附Android 4.0设计指南全文翻译)的相关文章

浅析Android 4.0的通知系统

通过手机的通知系统,可以将应用程序的一些重要消息告知给用户.流畅.舒适.友好的应用程序离不开精心设计的消息提醒机制.但是并不是所有的通知都是用户想看的,否则只会给用户造成骚扰,所以要谨慎使用通知. 在对<Android Design>进行翻译时发现:Android系统已经提出了一些关于通知消息的设计建议,故在此分享给大家. 一.何时使用通知? 通知主要用于对时间敏感(Time Sensitive)的事件,尤其是涉及他人(Involve another person)的同步事件.例如下面的Gta

Android 4.0设计规范(附全文翻译pdf)

在拜读和翻译了Android design设计指导后,对比Android 4.0与Android2.3及之前版本的app设计指导,总结了Android 4.0设计的10大改变: 1. 导航栏 (详见模式PATTERNS>导航Navigation)由之前的物理按键导航(返回.菜单.搜索.主页)变成了嵌入屏幕的虚拟按键(返回.主页.最近任务). 左侧为早期有4个物理按键的手机,右侧为新版只有3个虚拟按钮的手机 把菜单项和搜索项从导航栏去掉,把之前通过长按主页键才出现的最近任务直接展示在导航栏中. 最

全面的Android文件目录解析和获取方法(包含对6.0系统的说明)

一直以来对Android系统目录的获取方法和具体代表含义没有掌握清楚,今天特意整理了一下,分享给大家,对自己也是一个总结. 在android 6.0以前,你可以只关注外置存储是否挂载即可,但是从6.0以后,也就是M系统后,还需要判断是否有读写权限,只有具备这些权限才可以读写外置存储. 1,Context.getFilesDir 获取路径:/data/user/0/应用包名/files 该目录是应用的文件存储目录,应用被卸载时,该目录一同被系统删除.默认存在,默认具备读写权限(6.0系统可以不用向

轻松入门Android直播相关技术 从0搭建直播系统

本文讲的是轻松入门Android直播相关技术 从0搭建直播系统,我立马实践了下,所以首先给大家分享下整个搭建的流程: 本人的操作系统为mac,其他系统的同学可以根据提示,自行安装软件. 一个简易的直播系统,大致可以由三部分组成: 搭建一个rtmp媒体服务器 推流端 拉流端 现在目标是快速搭建起来,所以当然是借助开源项目和一些软件: rtmp媒体服务器:这里使用srs 推流端:这里使用obs 拉流端:这里使用播放器vlc rtmp媒体服务器的搭建 这里使用srs,srs的链接为: https://

android system-获取android系统日志,4.0以后的系统如何获取系统日志

问题描述 获取android系统日志,4.0以后的系统如何获取系统日志 毕设是做监控android系统日志,可现在google不开放获取系统日志权限,求大神提供方法,网上有看到方法 不过好像不行 解决方案 如何获取 android 的系统日志 logcat如何获取 android 的系统日志 logcat如何获取Android 的系统日志logcat

Android中实现全屏、无标题栏的两种办法(另附Android系统自带样式的解释)

原文:Android中实现全屏.无标题栏的两种办法(另附Android系统自带样式的解释) 在进行UI设计时,我们经常需要将屏幕设置成无标题栏或者全屏.要实现起来也非常简单,主要有两种方法:配置xml文件和编写代码设置. 1.在xml文件中进行配置 在项目的清单文件AndroidManifest.xml中,找到需要全屏或设置成无标题栏的Activity,在该Activity进行如下配置即可. 实现全屏效果: android:theme="@android:style/Theme.NoTitleB

Android源码浅析(五)——关于定制系统,如何给你的Android应用系统签名

Android源码浅析(五)--关于定制系统,如何给你的Android应用系统签名 今天来点简单的我相信很多定制系统的同学都会有一些特定功能的需求,比如 修改系统时间 静默安装 执行某shell命令 这些对于正常的应用来说,是需要很多技巧性的东西来做的,因为他们没有权限,而我们做定制系统的 话,可以给我们的应用来系统签名,这样就拥有系统的权限了,那我们应该怎么做呢? 我们以执行某shell命令为课题来解释: 首先,我们要知道,一般的命令都是在system/bin下,我们可以看图 使用shell命

Android WebView使用方法详解 附js交互调用方法_Android

目前很多Android app都内置了可以显示web页面的界面,会发现这个界面一般都是由一个叫做WebView的组件渲染出来的,学习该组件可以为你的app开发提升扩展性. 先说下WebView的一些优点: --可以直接显示和渲染web页面,直接显示网页 --webview可以直接用html文件(网络上或本地assets中)作布局 --和JavaScript交互调用  一.基本使用 首先layout中即为一个基本的简单控件: <WebView android:id="@+id/webView

Android WebView使用方法详解 附js交互调用方法

目前很多Android app都内置了可以显示web页面的界面,会发现这个界面一般都是由一个叫做WebView的组件渲染出来的,学习该组件可以为你的app开发提升扩展性. 先说下WebView的一些优点: --可以直接显示和渲染web页面,直接显示网页 --webview可以直接用html文件(网络上或本地assets中)作布局 --和JavaScript交互调用 一.基本使用 首先layout中即为一个基本的简单控件: <WebView android:id="@+id/webView1