Notification


什么是 Notification

Notification 是一种具备全局效果的通知,它会展示在屏幕的顶端,首先会表现行为一个图标,当用户向下滑动的时候,会展现出通知的具体内容。css

由于 Android 的快速发展,随着 android 版本的快速升级,致使了一些兼容性问题。对于 Notification 而言,Android 3.0 是一个分水岭,在以前构建 Notification 推荐使用 NotificationCompate.Builder,它位于 android.support.v4.app 包中。而在 Android 3.0 后,通常推荐使用 Notification.Builder 构建。java

Notification 的基本布局


上面的组成元素依次是:android

  1. Title/Name:标题
  2. Icon/Photo:大图标
  3. Message:信息内容
  4. 内容文字:通知消息,在小图标左手边的一个文字
  5. Secondary Icon:小图标
  6. Timestamp:通知时间

Notification 的扩展布局

在 Jelly Bean 中你能够为通知提供更多事件的细节。你能够经过扩展布局显示消息的前几行或者预览图片,这样用户能够看到更多的内容。用户能够经过 pinch-zoom 或者双手指滑动来打开扩展布局。Android 为单条消息提供了两种扩展布局(文字和图像)供你开发时使用。bootstrap

NotificationManager

通知通常是经过NotificationManager服务发送一个 Notification 对象来完成,NotificationManager 位于应用程序的框架层中,是一个重要的系统级服务,应用程序能够经过它来向系统发送全局的通知。app

NotificationManager 类是一个通知管理器类,以单例模式来获取其对象,该对象是由系统维护的服务。你能够经过调用context.getSystemService(Context.NOTIFICATION_SERVICE)来获取 NotificationManager 对象。框架

发送通知

你能够经过调用 NotificationManager 对象的notify()方法来发送一个通知。notify() 有两个重载的方法:布局

 
 
 
 
notify (int id, Notification notification)notify (String tag, int id, Notification notification)

NotificationManager 在发送通知的时候,须要给 notification 设置一个惟一的标识,这个标识在调用 notify(id, notification) 的时候体现为参数id,而在调用 notify(tag, id, notification) 时则体现为(tag, id)的值对。ui

更新通知

你也能够经过调用 notify() 来跟新某个通知。对于一个已经显示的通知,若是你想更新它,只需调用 notify() 方法,并传入一个(或一对)和原通知相同的标识便可。spa

移除通知

Android 提供两种方式来移除通知:code

  • 一种是经过 Notification 本身维护,经过调用 Notification.Builder 的setAutoCancel (true),可使通知能够在用户点击以后自动消失。
  • 另一种方式是使用 NotificationManager 来维护,经过调用cancle(id)cancle(tag, id)来移除某个指定的通知,或者,你能够经过调用cancleAll()来移除全部通知。

Notification.Builder

  • build()->Notification
    获得 Notification 对象。

  • setContentIntent(PendingIntent )->Notification.Builder
    提供一个 PendingIntent 来响应通知的点击事件。

  • setContentTitle(CharSequence title)->Notification.Builder
    设置标题

  • setContentText(CharSequence text)->Notification.Builder
    设置内容

  • setSubText(CharSequence text)->Notfication.Builder
    设置内容下面的一小行的文字

  • setTicker(CharSequence tickerText)->Notification.Builder
    设置收到通知时,在顶部显示的文字信息

  • setWhen(long when)->Notification.Builder
    设置通知时间,通常是设置收到的时间 System.currentTimeMillis()

  • setSmallIcon(int icon)->Notification.Builder
    设置右下角的图标,在接收到通知的时候也会在顶部显示这个小图标。

  • setLargeIcon(Bitmap icon)->Notification.Builder
    设置左边的大图标。

  • setAutoCancel(boolean autoCancel)->Notification.Builder
    使通知在用户点击以后自动消失(默认不消失)。

  • setDefaults(int defaults)->Notification.Builder
    向通知添加声音、闪烁和震动效果。
    你能够经过位或运算符|来组合多种属性:DEFAULT_SOUND, DEFAULT_VIBRATE, DEFAULT_LIGHTS
    你也能够启动全部的默认属性:DEFAULT_ALL

  • setVibrate(long[] pattern)->Notification.Builder
    设置震动方式

  • setLights(int argb, int onMs, int offMs)->Notification.Builder
    设置闪烁灯提醒,参数依次是:灯光颜色、亮的持续时间、暗的持续时间。
    不是全部颜色均可以,这跟设备有关,有些手机还不带三色灯;
    另外,你须要为 Notification 设置 flags 为 Notification.FLAG_SHOW_LIGHTS 时才支持三色灯;

  • setSound(Uri sound)->Notification.Builder
    设置接收到通知时的铃声,但是是系统的,也能够是自定义的。

  • setOnGoing(boolean ongoing)->Notification.Builder
    设置它是一个正在进行的通知,它一般表示一个后台任务。如用户在播放音乐、下载文件、同步操做等,所以而占用设备。

  • setProgress(int max, int progress, boolean indeterminate)->Notification.Builder
    设置带进度条(ProgressBar)的通知,参数依次为:进度条的最大值、当前值、进度是否不肯定。

  • setPriority(int proprity)->Notification.Builder
    设置优先级

优先级 描述
MAX 重要而紧急的通知,通知用户这个事件是时间紧迫并且须要当即处理的。
HIGH 高优先级,用于重要的通信内容,如短信或聊天等。
DEFAULT 默认优先级,用于没有特殊优先级分类的通知。
LOW 低优先级,用于通知一些不是很紧急的事件。
MIN 最低优先级,用于后台消息(天气或位置信息),只有用户下拉通知栏时才能看到内容。


相关文章
相关标签/搜索