【Android】Notification小結

Notification 通知

最近使用Notification爲應用顯示後臺推送消息,在開發過程當中遇到一些問題。從新整理之前寫過的代碼發如今Support包中NotificationCompat類,是爲新舊版本的android系統作的兼容庫。原來的通知消息在高版本android系統上會出現奇怪的問題。以後我用新版NotificationCompat從新寫消息通知欄。解決完問題以後我從新整理了一下資料,熟悉新版通知的使用,文章內容淺顯。另外奉上Google官方關於通知的API Guides上面都有詳細的使用方法。
因爲新版通知有不少內容是服務於高版本Android系統,因此有些通知類型會在一些低版本系統中不能實現相應的效果,其次因爲國內手機廠商對系統從新定製致使一些通知樣式也不能到達預期效果。這些問題須要在開發中引發注意,避免影響到app的用戶體驗,因此作好設備兼容性是最主要的問題。html

文章的Demo地址android

通知建立

Notification採用builder設計模式,通知欄的參數配置在builder中完成,再由builder來build通知實例Notification,最後NotificationManager顯示通知消息。建立通知必須包含git

NotificationCompat.Builder mBuilder =
        new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!");
NotificationManager mNotificationManager =
    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(mId, mBuilder.build());

Builder參數

Method Introduction
setSmallIcon 設置通知小圖標(必須設置項)
setLargeIcon 設置通知大圖標
setContentTitle 設置通知標題(必須設置項)
setContentText 設置通知內容(必須設置項)
setDefaults 消息提醒模式 (聲音/震動/提示燈...)
setSound 設置自定義消息提醒音
setVibrate 設置震動頻率
setLights 設置提示燈顯示
setOngoing 設置通知是否能夠在通知列表清楚
setOnlyAlertOnce 通知若是已經存在再也不提醒
setAutoCancel 消息點擊以後是否還在通知欄中顯示
setProgress 設置進度,在通知欄上顯示進度樣式
setContent 用於設置自定義通知
setContentIntent 設置通知點擊跳轉的內容

擴展布局通知

須要注意的是擴展布局通知只支持Android 4.1 及更高版本的系統,另外在一些國產機定製rom中可能不支持擴展布局通知,因此在使用擴展布局的須要慎重考慮。github

BigPictureStyle

BigPictureStyle支持顯示大圖的通知,下面是幾個能夠設置的參數,通知圖片顯示經過bigPicture設置bitmap設計模式

  • setBigContentTitleapp

  • setSummaryTextide

  • bigLargeIcon佈局

  • bigPicture測試

NotificationCompat.BigPictureStyle bigPictureStyle = new NotificationCompat.BigPictureStyle();
bigPictureStyle.setBigContentTitle("Title");
bigPictureStyle.setSummaryText("SummaryText");
Bitmap bigPicture = BitmapFactory.decodeResource(getResources(),R.drawable.android);
bigPictureStyle.bigPicture(bigPicture);
builder.setStyle(bigPictureStyle);

clipboard.png

BigTextStyle

顯示文本通知,能夠顯示更多文本內容。感受和inboxStyle差很少。ui

  • setBigContentTitle

  • setSummaryText

  • bigText

NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle();
bigTextStyle.setBigContentTitle("Title");
bigTextStyle.bigText("BigText\nBigText\nBigText\nBigText\nBigText");
bigTextStyle.setSummaryText("SummaryText");
builder.setStyle(bigTextStyle);

clipboard.png

MessagingStyle

消息通知,可快速回復message的通知。好像在Android N以上才能使用。目前手上的測試機是低版本的,沒有快速回復的操做項。
addMessage
setConversationTitle

NotificationCompat.MessagingStyle messagingStyle = new NotificationCompat.MessagingStyle("UserName");
messagingStyle.addMessage("message",System.currentTimeMillis(),"JulyYu");
messagingStyle.setConversationTitle("Messgae Title");
builder.setStyle(messagingStyle);

InboxStyle

能夠顯示多行文本的通知,經過addline並能增長新的一行文本內容。

  • setBigContentTitle

  • setSummaryText

  • addLine

NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
String[] events = new String[]{"1","2","3","4"};
inboxStyle.setBigContentTitle("Event tracker details:");
inboxStyle.setSummaryText("SummaryText");
for (int i=0; i < events.length; i++) {
    inboxStyle.addLine(events[i]);
}
builder.setStyle(inboxStyle);

clipboard.png

MediaStyle

多媒體播放通知,快捷的多媒體操做控件。能夠自定義須要顯示的操做控件內容。

  • setShowActionsInCompactView

  • setMediaSession

  • setShowCancelButton

  • setCancelButtonIntent

builder.addAction(android.R.drawable.ic_media_rew,"",null);
 builder.addAction(android.R.drawable.ic_media_play,"",null);
 builder.addAction(android.R.drawable.ic_media_ff,"",null);
 NotificationCompat.MediaStyle mediaStyle = new NotificationCompat.MediaStyle();
 mediaStyle.setShowActionsInCompactView(0,1,2);
 mediaStyle.setShowCancelButton(true);
 builder.setStyle(mediaStyle);

clipboard.png

相關文章
相關標籤/搜索