Android自助餐之notification
阿新 • • 發佈:2018-12-05
通知欄各種玩法
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)
自定義通知的viewsetContentInfo(CharSequence info)
顯示在右邊的文字(時間下面)setNumber(int number)
顯示在右邊的數字(時間下面,如果呼叫了setContentInfo,則此設定不生效)setContentIntent(PendingIntent intent)
設定點選通知後的intentsetDeleteIntent(PendingIntent intent)
設定使用者直接移除該通知後的intentsetFullScreenIntent(PendingIntent intent, boolean highPriority)
An intent to launch instead of posting the notification to the status barsetLargeIcon(Bitmap icon)
顯示在通知欄的iconsetSmallIcon (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)
如果該通知正在顯示,則再發通知不會觸發鈴聲,震動,tickersetPriority(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)
發通知時在系統欄顯示的文字和viewsetTicker (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的intentgetBroadcast()
封裝一個發廣播的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");