天天看点

Android Notification

本文的主要内容是从下列的连接中总结而来。

http://adchs.github.io/patterns/notifications.html

https://developer.android.google.cn/guide/topics/ui/notifiers/notifications.html

http://www.runoob.com/w3cnote/android-tutorial-notification.html

通知是您可以在应用的常规ui外部向用户显示的消息。当您告知系统发出通知时,它将先以图标的形式显示在通知区域中。用户可以打开抽屉式通知栏查看通知的详细信息。通知区域和抽屉式通知栏均是由系统控制的区域,用户可以随时查看。
Android Notification
Android Notification
一个通知的钢需 icon 小图标 通过 setsmallicon 方法设置 title 标题 setcontenttitle 方法设置 msg 信息 setcontenttext() 设置 以上三个是一个通知所必须的,而其他的属性都是可选的

常用的方法

setcontenttitle() 设置标题

setcontenttext() 设置内容

setsubtext() 设置内容下发的小文字

setticker() 设置收到通知时在顶部显示的文字信息

setwhen() 设置通知时间 通常值为 system.currecttimemillis()

setsmallicon() 设置小图标

setlargericon() 设置大图标

setautocancel() 设置点击 notification面板点击后 是否取消通知的显示 默认值是不取消

setdefaults() 向通知添加闪灯声音,闪灯,震动等效果 最简单的时使用 默认的(defaults)属性 可以组合多种属性

light 默认灯光

sound 默认声音

vibrate 默认震动

all 全部

setvibrate 设置震动的方式

setsound 设置通知时候的铃声 可以是系统的也可以是文件

setongoing() 如果设置为true 表示为一个正在进行或者正在等待处理的通知。通常用来表示一个后台任务,如(播放音乐等),也可能是因为某种原因在等待比如:文件下载,请求联网等

setprogress(int,int,bool) 设置带进度条的通知 参数为 最大值,当前值,进度条是否不确定

如果是不确定进度条 调用 setprogress(0,0,ture) 两种格式的进度条取消的时候调用setprogress(0,0,false)

setcontentintent(pendingintent intent); pendingintent 和intent 有所不同 主要用于 远程服务通信,闹铃,通知,启动器,短信中 ,启动activity中 一般情况下用的比较少

Android Notification

浮动通知

浮动通知,时 android 5.0 新出的显示方式,以顶部弹框的形式显示出我们的通知。

锁屏通知

android 5.0 开始,通知可以显示在锁屏上了,我们可以通过<code>setvisibility</code>方法来设置锁频通知所显示的内容 参数: visibility_private : 显示基本信息,如通知的图标,但隐藏通知的全部内容 visibility_public : 显示通知的全部内容 visibility_secret : 不显示任何内容,包括图标

setpriority() 设置通知的优先级

max 重要而紧急的消息,继续被用户处理

high 高优先级 用途通讯 如短信,或者消息

default 默认

low 可以通知用户但是不紧急

min 后台消息

Android Notification
我们发送的通知,理所应当该有一个动作,点击通知后跳转到某个界面(qq 点击消息通知后跳转到聊天界面), 而不仅仅只是用来显示消息来的. 最主要的知识是pendingintent 从字面上来解释就是: 延迟的意图 可以看做是对intent的一种封装,因为pendingintent中包含intent和所需的context环境,所以,创建pendingintent的对象被销毁后,也不会影响到pendingintent的执行。 获取pendingintent的方式

flag 参数 flag_cancel_current:如果当前系统中已经存在一个相同的 pendingintent 对象,那么就将先将已有的 pendingintent 取消,然后重新生成一个 pendingintent 对象。 flag_no_create:如果当前系统中不存在相同的 pendingintent 对象,系统将不会创建该 pendingintent 对象而是直接返回 null 。 flag_one_shot:该 pendingintent 只作用一次。 flag_update_current:如果系统中已存在该 pendingintent 对象,那么系统将保留该 pendingintent 对象,但是会使用新的 intent 来更新之前 pendingintent 中的 intent 对象数据,例如更新 intent 中的 extras 。

有时候,我们发送了一个通知,我们通过这个通知,跳转到时候activity中,但是,我们又想,让我们的用户继续停留在我们的应用中。

对比

普通的方式进行导航

Android Notification

保留activity栈的方式

Android Notification

配置xml文件

程序实现

Android Notification
更新通知时,我们就需要,上放我们调用<code>nmanager.notify(id,notification)</code>方法时传递的id了,如果该通知存在就更新该通知,如果不存在就创建新的通知。

点击通知栏的清除按钮,会清除所有可清除的通知

设置了 setautocancel() 或 flag_auto_cancel 的通知,点击该通知时会清除它

通过 notificationmanager 调用 cancel(int id) 方法清除指定 id 的通知

通过 notificationmanager 调用 cancel(string tag, int id) 方法清除指定 tag 和 id 的通知

通过 notificationmanager 调用 cancelall() 方法清除所有该应用之前发送的通知

Android Notification
我们要使用自定义通知来实现下图这样的一个通知。
Android Notification

布局文件

代码实现

除非特殊声明否则,本博客文章均属 鲁迅认识的那只猹 原创,未经许可禁止转载,否则将保留追究法律责任的权利。

如果本博客损害了您的相关权益,请及时联系我,我将妥善处理。 email: [email protected]