是在你的應用常規界面之外展示的消息,當app讓系統發送一個消息的時候,消息
首先以圖表的形式顯示在通知欄,要查看消息的詳情需要進入通知抽屜(notificationdrawer中查看)
通知欄和通知抽屜都是系統層面的,你可以隨時查看,不限制于appNotification的設計
作為android UI 中很重要的組成部分,notification擁有屬于自己專屬的設計規則Notification的界面元素
在通知抽屜中的notification有兩種顯示方式,取決于你的android版本以及notification drawer的狀態
(1)普通視圖
這種風格是notification drawer的標準顯示方式
(2)寬視圖
指你的notification被展開的時候會顯示更大的視圖,這種風格是android4.1版本之后才有的新特性
2、創建一個Notification
首先將notification的一些UI信息以及相關動作NotificationCompat.Builder對象,然后通過NotificationCompat.Builder.build()來獲得notification對象自己,然后調用NotificationManager.notify()向系統轉交這個通知一個notification對象需要包含以下內容:
小圖標(setSmallIcon()獲取)
標題(setContentTitle()獲取)
詳情文字(setContentText()獲取)
除此之外,其余內容都是可選的可以去官網看下NotificationCompat.Builder的相關文檔
Notification的動作與行為雖然這也是可選的,但是你還是應該為你的notification至少添加一種行為:允許用戶通過點擊notif進入一個activity中,進行更多的查看或者后續操作,一個notification可以提供多種動作,而且你也應該讓用戶點擊一個notification之后能總是有相應的響應動作,通常是打開一個activity,你還可以在notification中添加能響應點擊事件的button,比如延遲一下鬧鐘,或者立即回復一條短消息
- 在notification內部,一個動作本身是被定義在一個PendingIntent中,PendingIntent包含一個用于啟動你app中的activity的intent,要講PendingIntent和一個手勢聯系起來,
你需要調用合適的NotificationCompat.Builder方法,比如你想在點擊notification文字的時候啟動activity,你需要調用NotificationCompat.Builder的setContentIntent()來添加PendingIntent。啟動一個activity是notification動作相應中最普遍的一類寬視圖
3、管理Notification
* **刪除通知:**
- 通知會一直存在,知道下面的情況之一發生用戶手動一條一條的清楚通知,或者使用"清楚所有"(如果通知允許被清除)用戶點擊通知,當你創建這個通知的時候使用了setAutoCancel();你為一個指定ID的通知調用了cancel(),這個方法也去刪除正在執行的通知你調用了cancelAll()方法,這將刪除所有你之前發布的通知
4、顯示進度通知欄
- 通知可以包含一個動態的進圖指示器,用來顯示當前操作的進度,如果你能估計這個操作總共有多久,已經任何時間點上完成進度,那么你可以用一個"確定"格式的指示器(進度條),如果說你沒法估計操作的長度,用"不確定"格式的指示器進度條指示器是實現了ProgressBar來執行顯示的調用setProgress()方法來使用進度條指示器開始于Android4.0,在之前的版本,你必須創建自己的通知布局來包含ProgressBar視圖
5、自定義通知視圖
通知的框架允許自定義通知的布局,通過RemoteViews對象來定義通知的外觀,自定義通知布局與常規通知相似當時他是基于定義在xml文件的RemoteViews對象來操作的
自定義通知的可用高度是取決與通知視圖的,正常的視圖高度限制在64dp,可展開視圖的而不懼高度限制在256dp
為了去定義自己的通知布局,從擴充xml文件獲取一個RemoteViews對象的實例開始,然后,類似于調用setContentTitls()方法 一樣,我們需要滴啊用setContent(),為了能設置更多細節,我們使用RemoteViews對象的方法來設置更多的內容
1、創建一個單獨的xml文件,用來定義通知的布局,
2、在應用里面,使用RemoteViews對象的方法來給你的通知設置文本和圖標,通過調用setContent()把你的RemoteViewsdyuxuabg 放到NotificationCompat.Builder里面,避免使用背景視圖,引文你的文本可能變得不易閱讀RemoteViews對象也包含一些方法用來給你去添加Chronometer和ProgressBar。想要了解更多的自定義布局通知,參考文檔
3、注意:當你使用自定義的通知條的時候,特別要注意你自定義的通知條在不同方向與分辨率的設備上是如何工作的,當然這條建議對所有的視圖布局,都很重要,但對通知條來說尤其重要的,因為通知抽屜的控件十分有限,不要把自己的通知條做的太過復雜,確保他的靈活性
4、為自定義的通知條文本使用樣式資源
自定義通知條的時候總是使用樣式資源去定義文本,通知的背景顏色會變得與設備當前版本的android有很大的反差,使用樣式文件能幫你很好的解決這一點,從2.3開始,系統就為標準的通知布局定義了文本的樣式,如果你在2.3以及以上更高的版本上使用同樣的樣式,你必須確保你的文本相對于背景是可以看見的