原文地址:http://android.xsoftlab.net/training/notify-user/index.html

引言

通知用于在有事件发生时,将事情以更便捷的方式展示给用户。用户可以在他们方便的时候直接与通知交互。

Notifications design guide课程讲述了如何设计有效的通知以及何时去使用它们。这节课将会学习如何实现通用的通知设计。

构建通知

这节课的实现主要基于NotificationCompat.Builder类,NotificationCompat.Builder类属于支持库。开发者应该使用NotificationCompat及其子类,特别是NotificationCompat.Builder,以便支持更宽泛的平台。

创建通知构建器

当创建通知时,需要指定通知的UI内容以及它的点击行为。一个Builder对象至少要包含以下条件:

  • 一个小图标,通过setSmallIcon()方法设置。
  • 通知标题,通过setContentTitle()方法设置。
  • 详细文本,通过setContentText()方法设置。

比如:

NotificationCompat.Builder mBuilder =new NotificationCompat.Builder(this).setSmallIcon(R.drawable.notification_icon).setContentTitle("My notification").setContentText("Hello World!");

定义通知的行为

创建通知时,应当至少为通知添加一个行为。这个行为会将用户带到Activity中,这个Activity中详细的展示了发生了什么事情,或者可以使用户采取进一步的行动。在通知内部,行为由PendingIntent所包含的Intent指定,它可以用来启动Activity.

如何构造PendingIntent取决于要启动的Activity的类型。当由通知启动Activity时,开发者必须考虑用户所期待的导航体验。在下面的代码中,点击通知会启动一个新的Activity,这个Activity继承了通知所产生的行为习惯。在这种情况下不需要创建人为的回退栈。

Intent resultIntent = new Intent(this, ResultActivity.class);
...
// Because clicking the notification opens a new ("special") activity, there's
// no need to create an artificial back stack.
PendingIntent resultPendingIntent =PendingIntent.getActivity(this,0,resultIntent,PendingIntent.FLAG_UPDATE_CURRENT
);

设置通知的点击行为

为了使PendingIntent与手势产生关联,需要调用NotificationCompat.Builder的对应方法。比如要启动一个Activity,则调用setContentIntent()方法添加PendingIntent即可。

发布通知

发布通知需要执行以下步骤:

  • 获得NotificationManager的实例。
  • 使用notify()方法发布通知。在调用notify()方法时需要指定通知的ID,这个ID用于通知的稍后更新。
  • 调用build()方法,它会返回一个Notification对象。
NotificationCompat.Builder mBuilder;
...
// Sets an ID for the notification
int mNotificationId = 001;
// Gets an instance of the NotificationManager service
NotificationManager mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// Builds the notification and issues it.
mNotifyMgr.notify(mNotificationId, mBuilder.build());

Android官方开发文档Training系列课程中文版:通知用户之构建通知相关推荐

  1. Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之Fragment创建

    原文地址:http://android.xsoftlab.net/training/basics/fragments/index.html 导言 为了在Android中创建动态的多面板用户界面,你需要 ...

  2. Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之与其它Fragment通信

    原文地址:http://android.xsoftlab.net/training/basics/fragments/communicating.html 为了可以重复使用Fragment UI组件, ...

  3. Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之构建灵活的UI

    原文地址:http://android.xsoftlab.net/training/basics/fragments/fragment-ui.html 当设计应用程序时需要支持尺寸较大的宽屏设备时,可 ...

  4. Android官方开发文档Training系列课程中文版:目录

    原文地址 : http://android.xsoftlab.net/training/index.html 引言 在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻 ...

  5. Android官方开发文档Training系列课程中文版:创建自定义View之View的创建

    原文地址:http://android.xsoftlab.net/training/custom-views/index.html 引言 Android框架含有大量的View类,这些类用来显示各式各样 ...

  6. Android官方开发文档Training系列课程中文版:OpenGL绘图之图形绘制

    原文地址:http://android.xsoftlab.net/training/graphics/opengl/draw.html 如果你还不清楚如何定义图形及坐标系统,请移步:Android官方 ...

  7. Android官方开发文档Training系列课程中文版:打印内容之HTML文档打印

    原文地址:http://android.xsoftlab.net/training/printing/html-docs.html 在Android中打印内容要比打印照片要复杂一些,它要求将文本与图像 ...

  8. Android官方开发文档Training系列课程中文版:键盘输入处理之处理键盘按键

    原文地址:http://android.xsoftlab.net/training/keyboard-input/commands.html 当用户将焦点给到可编辑文本的View时,例如EditTex ...

  9. Android官方开发文档Training系列课程中文版:手势处理之监测通用手势

    原文地址:http://android.xsoftlab.net/training/gestures/index.html 引言 这节课将会学习如何让用户通过触摸手势与APP产生交互.Android提 ...

最新文章

  1. Java代码安装maven jar,maven添加第三方的jar包
  2. rabbitmq 入门demo
  3. 记录发现的一个hiredis的bug
  4. mycat mysql 物理部署_一、MyCat的搭建
  5. python做的游戏可以导出吗_Python for RenderDoc批量导出模型和贴图
  6. JAVA入门级教学之(深入throws的异常抛出机制)
  7. Java虚拟机知识汇总,有这些还怕面试被问到?
  8. Spring3+Struts2+Hibernate4+Mybatis整合的一个maven例子
  9. C#窗体控件-文本框控件TextBox
  10. python orm开发模型_Python ORM框架Peewee初探【二】创建或者生成模型
  11. android声音播放mp3文件,如何在android中播放音频文件
  12. 在未来的多云世界中,选择云服务提供商,需要考虑什么?
  13. 计算机学校排名高中,高中学校排名/全国高中排名一览表
  14. 数据库索引——唯一索引、主键索引、聚集索引
  15. BI案例:BI在连锁零售业应用(ZT)【转】
  16. vue provide / inject 实现组件数据的实时响应
  17. Coursera 国内无法登陆问题
  18. 什么是超线程,开启超线程有什么作用
  19. 关于用OC创建的项目调用swift代码
  20. 进网站显示无法进入服务器,关于无法进入服务器的解决办法

热门文章

  1. 查看 Oracle 是32位还是64位的方法
  2. redis伪集群安装linux,redis伪集群搭建(亲测无坑)
  3. hdu4941 map交换行列
  4. 01-Vue博客后台管理页面框架搭建
  5. 【Android 事件分发】ItemTouchHelper 实现拖动排序
  6. 【设计模式】适配器模式 ( 概念 | 适用场景 | 优缺点 | 外观模式对比 | 适配器模式相关角色 | 类适配器 | 对象适配器 | 实现流程 )
  7. [Spring cloud 一步步实现广告系统] 22. 广告系统回顾总结
  8. 2019-7-29 考试总结
  9. python反转链表和成对反转
  10. AtCoder Grand Contest 013D: Piling Up 题解