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 最低優先級,用於後臺消息(天氣或位置信息),只有用戶下拉通知欄時才能看到內容。


相關文章
相關標籤/搜索