Android通知Notification
簡介:
android通知,是Android系統一個比較有特色的功能,當某個應用希望向用戶發送一些提示信息,而該程序又不在前臺運行的時候,這時候就需要用到通知,它會在狀態欄上方顯示通知圖標和一些提示文字
功能作用:
1.顯示接收到短消息、即使消息等信息 (如QQ、微信、新浪、短信)
2.顯示客戶端的推送消息(如有新版本發佈,廣告,推薦新聞等)
3.顯示正在進行的事物(例如:後臺運行的程序)(如音樂播放器、版本更新時候的下載進度等)
學習思路
Notificaiton – service – BroadcastReceiver – Intent(flag、Action等屬性應用) – PendingIntent
一個Notificaiton通知的拓展使用就要涉及與4大組建的配合,所以學好整體的知識體系。
參考文檔及使用教程:
設計文檔 :
官方:http://developer.android.com/design/patterns/notifications.html
譯文:http://adchs.github.io/patterns/notifications.html
使用教程 :http://developer.android.com/training/notify-user/index.html
開發文檔 :http://developer.android.com/reference/android/app/Notification.html
1.前言
- 1 .基本佈局
(1)普通視圖:
高度64dp
(2)大視圖的通知在展開前也顯示爲普通視圖
元素:
1. 標題 Title/Name
2. 大圖標 Icon/Photo
3. 內容文字
4. 內容信息 MESSAGE
5. 小圖標 Secondary Icon
6. 通知的時間 Timestamp,默認爲系統發出通知的時間,也可通過setWhen()來設置
- 2.必要的類
狀態通知欄主要涉及到2個類: Notification 和 NotificationManager
Notification爲通知信息類,它裏面對應了通知欄的各個屬性
NotificationManager : 是狀態欄通知的管理類,負責發通知、清除通知等操作。
注意:NotificationManager 是一個系統Service,所以必須通過 getSystemService(NOTIFICATION_SERVICE)方法來獲取,方法如下
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
2.使用流程
- 1.流程模塊
第一步:創建一個通知欄的Builder構造類 (Create a Notification Builder)
第二步:定義通知欄的Action (Define the Notification’s Action)
第三步:設置通知欄點擊事件 (Set the Notification’s Click Behavior)
第四步:通知 (Issue the Notification)
- 2.代碼模塊
第一步:獲取狀態通知欄管理:
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
第二步:實例化通知欄構造器NotificationCompat.Builder:
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
第三步:對Builder進行配置:
mBuilder.setContentTitle("測試標題")//設置通知欄標題
.setContentText("測試內容") /<span style="font-family:Arial;">/設置通知欄顯示內容</span>
.setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL)) //設置通知欄點擊意圖
// .setNumber(number) //設置通知集合的數量
.setTicker("測試通知來啦") //通知首次出現在通知欄,帶上升動畫效果的
.setWhen(System.currentTimeMillis())//通知產生的時間,會在通知信息裏顯示,一般是系統獲取到的時間
.setPriority(Notification.PRIORITY_DEFAULT) //設置該通知優先級
// .setAutoCancel(true)//設置這個標誌當用戶單擊面板就可以讓通知將自動取消
.setOngoing(false)//ture,設置他爲一個正在進行的通知。他們通常是用來表示一個後臺任務,用戶積極參與(如播放音樂)或以某種方式正在等待,因此佔用設備(如一個文件下載,同步操作,主動網絡連接)
.setDefaults(Notification.DEFAULT_VIBRATE)//向通知添加聲音、閃燈和振動效果的最簡單、最一致的方式是使用當前的用戶默認設置,使用defaults屬性,可以組合
//Notification.DEFAULT_ALL Notification.DEFAULT_SOUND 添加聲音 // requires VIBRATE permission
.setSmallIcon(R.drawable.ic_launcher);//設置通知小ICON
3.對應的各個方法的屬性
(1)方法:設置提醒標誌符Flags
(2)方法:.setDefaults(int defaults) (NotificationCompat.Builder中的方法,用於提示)
(3)方法:setVibrate(long[] pattern)
(4)方法:.setLights(intledARGB ,intledOnMS ,intledOffMS )
(5)方法:.setSound(Uri sound)
(6)方法:.setPriority(int pri)
(7)方法:setOngoing(boolean ongoing)
(8)方法:setProgress(int max, int progress,boolean indeterminate)4.設置通知欄PendingIntent
1)什麼是PendingIntent
2)PendingIntent什麼用
3)相關屬性和方法
- 5.發送通知請求
未完待續….