1. 程式人生 > >Android自助餐之notification

Android自助餐之notification

通知欄各種玩法

NotificationSample

網上各種玩法的demo

SimpleNotificationDemo

簡單的通知實現

CustomNotificationDemo

自定義通知欄demo,實現自定義view與動態更新通知內容

知識點

Notification

  • notification.bigContentView = view;這麼做可以自定義通知的高度,但最大為200,最小為普通通知高度。如果使用builder的話,此處view與builder的一致。

flag

  • FLAG_AUTO_CANCEL
    使用者點選時消失
  • FLAG_FOREGROUND_SERVICE表示正在執行一個服務
  • FLAG_INSISTENT通知鈴聲會重複響直到通知被取消或通知視窗被開啟
  • FLAG_NO_CLEAR當用戶點選清除所有時該通知不被清除
  • FLAG_ONGOING_EVENT該通知被正在執行的事件所引用(比如正在通話)
  • FLAG_ONLY_ALERT_ONCE該通知僅首次傳送時震動或播放通知鈴聲,之前傳送的該通知未取消的情況下
  • FLAG_SHOW_LIGHTS傳送該通知時開啟呼吸燈

default

  • DEFAULT_SOUND使用預設通知聲音
  • DEFAULT_VIBRATE
    使用預設震動效果
  • DEFAULT_LIGHTS使用預設通知呼吸燈
  • DEFAULT_ALL全部使用預設

NotificationManager

NotificationCompat.Builder

  • setAutoCancel(boolean autoCancel)是否使用者點選後消失
  • setContent(RemoteViews views)自定義通知的view
  • setContentInfo(CharSequence info)顯示在右邊的文字(時間下面)
  • setNumber(int number)顯示在右邊的數字(時間下面,如果呼叫了setContentInfo,則此設定不生效)
  • setContentIntent(PendingIntent intent)設定點選通知後的intent
  • setDeleteIntent(PendingIntent intent)設定使用者直接移除該通知後的intent
  • setFullScreenIntent(PendingIntent intent, boolean highPriority)An intent to launch instead of posting the notification to the status bar
  • setLargeIcon(Bitmap icon)顯示在通知欄的icon
  • setSmallIcon (int icon, int level)顯示在通知欄的icon,尺寸較小
  • setContentTitle(CharSequence title)通知標題,icon的右邊上部
  • setContentText(CharSequence text)通知文字,icon的右邊下部
  • setLights(int argb, int onMs, int offMs)設定呼吸燈,依次為argb色值,亮起持續毫秒數,熄滅持續毫秒數
  • setOngoing(boolean ongoing)如果是正在進行中的通知,則不能被移除
  • setOnlyAlertOnce(boolean onlyAlertOnce)如果該通知正在顯示,則再發通知不會觸發鈴聲,震動,ticker
  • setPriority(int pri)優先順序
  • setProgress(int max, int progress, boolean indeterminate)進度
  • setSound (Uri sound)通知鈴聲Uri,在預設音訊流播放
  • setSound (Uri sound, int streamType)通知鈴聲Uri,在指定音訊流播放
  • setStyle (NotificationCompat.Style style)設定通知樣式
  • setSubText (CharSequence text)設定第三行文字(與progress衝突)
  • setTicker (CharSequence tickerText, RemoteViews views)發通知時在系統欄顯示的文字和view
  • setTicker (CharSequence tickerText)發通知時在系統欄顯示的文字
  • setUsesChronometer (boolean b)顯示自動計時器
  • setVibrate (long[] pattern)設定震動效果
  • setWhen (long when)設定通知傳送時間
  • addAction (int icon, CharSequence title, PendingIntent intent)在底部擴充套件一塊位置顯示這個按鈕,最多三個

PendingIntent

  • 對intent的包裝
  • pendingintent可以儲存建立intent時的context,即使當時的context不存在了,也能從pendingintent裡的context執行intent。
  • getActivity()封裝開啟一個activity的intent,就像Context.startActivity()
  • getActivitys()封裝開啟一組activity的intent
  • getBroadcast()封裝一個發廣播的intent,就像Context.sendBroadcast()
  • getService()封裝一個開啟服務的intent,就像Context.startService()

RemoteViews

  • 非UI執行緒
  • 從layout檔案進行inflate:new RemoteViews(packageName,R.layout.filename)
  • 提供修改子view的簡單方法:remoteViews.setTextViewText(R.id.view_name, "string");