Notification 是一種具備全局效果的通知,它會展示在屏幕的頂端,首先會表現行爲一個圖標,當用戶向下滑動的時候,會展現出通知的具體內容。css
由於 Android 的快速發展,隨着 android 版本的快速升級,致使了一些兼容性問題。對於 Notification 而言,Android 3.0 是一個分水嶺,在以前構建 Notification 推薦使用 NotificationCompate.Builder,它位於 android.support.v4.app 包中。而在 Android 3.0 後,通常推薦使用 Notification.Builder 構建。java
上面的組成元素依次是:android
在 Jelly Bean 中你能夠爲通知提供更多事件的細節。你能夠經過擴展布局顯示消息的前幾行或者預覽圖片,這樣用戶能夠看到更多的內容。用戶能夠經過 pinch-zoom 或者雙手指滑動來打開擴展布局。Android 爲單條消息提供了兩種擴展布局(文字和圖像)供你開發時使用。bootstrap
通知通常是經過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
setAutoCancel (true)
,可使通知能夠在用戶點擊以後自動消失。cancle(id)
或cancle(tag, id)
來移除某個指定的通知,或者,你能夠經過調用cancleAll()
來移除全部通知。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 |
最低優先級,用於後臺消息(天氣或位置信息),只有用戶下拉通知欄時才能看到內容。 |