想要看所有設置的請看這一篇 【轉】NotificationCopat.Builder所有設置html
經常使用設置:佈局
設置屬性post |
說明學習 |
setAutoCancel(boolean autocancel)ui |
設置點擊信息後自動清除通知this |
setContent(RemoteView view)spa |
設置自定義通知3d |
setContentTitle(String string)code |
設置標題htm |
setContentText(String string) |
設置內容 |
SetContentIntent(PendingIntent intent) |
設置點擊信息後的跳轉(意圖) |
setWhen(long when) |
設置時間 |
setPriority(int pri) |
設置通知的重要程度 |
setStyle(Style style) |
設置樣式 |
setVisibility(int visibility) |
設置鎖屏顯示 |
setDefault(int defaults) |
設置默認 |
setLight(int argb, int onMs, int offMs) |
設置呼吸燈閃爍效果 |
setSound(Uri sound) |
設置通知音效 |
setVibrate(long [] pattern) |
設置震動效果 |
setCategory(String category) |
設置通知類別 |
setColor(int argb) |
設置通知欄顏色 |
setFullScreenIntent(PendingIntent intent,boolean b) |
設置彈窗顯示 |
建立一個notification,須要NotificationManager(這是一個系統的服務類,由名字很容易知道是用來管理Notification通知類的)和Notification(通知類)
Notification建立相似Dialog的建立,經過Notification類中提供的各類方法來設置屬性,最後build方法生成
NotificationManger的實例能夠經過getSystemService這個方法得到
PendingIntent與Intent有關係,這是一個延遲意圖,能夠經過調用getActivity,getBroadcastReceiver,getService三個方法得到實例
NotificationCompat.Builder自動設置的默認值:
priority: PRIORITY_DEFAULT //通知的重要程度
when: System.currentTimeMillis() //時間
audio stream: STREAM_DEFAULT //音效 系統默認音效
上面的這三個咱們通常狀況下能夠不用設置,系統會自動幫咱們設置
下面就是一個簡單的使用,設置了標題,內容,小圖標,點擊通知欄的該信息會跳轉到main2Activity中,具體能夠看註釋,以後由這個普通使用的通知做爲基礎講解NotificationCopat.Builder中的其餘設置
Intent intent = new Intent(this,Main2Activity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);
NotificationManager manger = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("this is cotenttitle")//設置標題,必要
.setContentText("contentText")//設置內容,必要
.setWhen(System.currentTimeMillis())//設置時間,默認設置,能夠忽略
.setSmallIcon(R.mipmap.ic_launcher)//設置通知欄的小圖標,必須設置
.setAutoCancel(true)//設置自動刪除,點擊通知欄信息以後系統會自動將狀態欄的通知刪除,要與setContentIntent連用
.setContentIntent(pendingIntent)//設置在通知欄中點擊該信息以後的跳轉,參數是一個pendingIntent
.build();
manger.notify(1,notification);//id爲1
Intent intent = new Intent(this,Main2Activity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);
NotificationManager manger = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("this is cotenttitle")//設置標題,必要
.setContentText("contentText")//設置內容,必要
.setWhen(System.currentTimeMillis())//設置時間,默認設置,能夠忽略
.setSmallIcon(R.mipmap.ic_launcher)//設置通知欄的小圖標,必須設置
.setAutoCancel(true)//設置自動刪除,點擊通知欄信息以後系統會自動將狀態欄的通知刪除
.setContentIntent(pendingIntent)//設置在通知欄中點擊該信息以後的跳轉,參數是一個pendingIntent
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
//設置大圖標,未設置時使用小圖標代替,拉下通知欄顯示的那個圖標
//設置大圖片 BitmpFactory.decodeResource(Resource res,int id) 根據給定的資源Id解析成位圖
.build();
manger.notify(1,notification);
Intent intent = new Intent(this,Main2Activity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);
NotificationManager manger = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("this is cotenttitle")//設置標題,必要
.setContentText("contentText")//設置內容,必要
.setWhen(System.currentTimeMillis())//設置時間,默認設置,能夠忽略
.setSmallIcon(R.mipmap.ic_launcher)//設置通知欄的小圖標,必須設置
.setAutoCancel(true)//設置自動刪除,點擊通知欄信息以後系統會自動將狀態欄的通知刪除
.setContentIntent(pendingIntent)//設置在通知欄中點擊該信息以後的跳轉,參數是一個pendingIntent
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
//設置大圖標,未設置時使用小圖標代替,拉下通知欄顯示的那個圖標
//設置大圖片 BitmpFactory.decodeResource(Resource res,int id) 根據給定的資源Id解析成位圖
.setPriority(NotificationCompat.PRIORITY_MAX) //設置爲最高重要程度
.setDefaults(NotificationCompat.DEFAULT_SOUND)//設置音效爲默認
.build();
manger.notify(1,notification);
因爲只有一條信息,咱們可能看不出最高重要程度的區別,可是,咱們若是再設置音效或者震動,那麼這條通知就會彈窗顯示
實現彈窗顯示的兩種方法:一,當重要程度爲最高,且設置了音效或者是震動 ;二,調用setFullScreenIntent()
Intent intent = new Intent(this,Main2Activity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);
NotificationManager manger = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("this is cotenttitle")//設置標題,必要
.setContentText("contentText")//設置內容,必要
.setWhen(System.currentTimeMillis())//設置時間,默認設置,能夠忽略
.setSmallIcon(R.mipmap.ic_launcher)//設置通知欄的小圖標,必須設置
.setAutoCancel(true)//設置自動刪除,點擊通知欄信息以後系統會自動將狀態欄的通知刪除
.setContentIntent(pendingIntent)//設置在通知欄中點擊該信息以後的跳轉,參數是一個pendingIntent
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
//設置大圖標,未設置時使用小圖標代替,拉下通知欄顯示的那個圖標
//設置大圖片 BitmpFactory.decodeResource(Resource res,int id) 根據給定的資源Id解析成位圖
.setFullScreenIntent(pendingIntent,false)
.build();
manger.notify(1,notification);
圖片與以前那張同樣,我就不放出來了,值得說的是這個方法的第二個參數,爲何是false呢,若是是true的話,當你在玩遊戲的時候,屏幕是全屏,而後這條通知就不須要點擊,直接就會跳轉到某個界面去,除非是來電了纔會用true,其餘狀況如果使用的話,用戶估計直接卸載APP
以前也是使用了這個設置與setPriority連用實現了彈窗消息,簡單解釋,這個能夠設置音效,震動和呼吸燈的默認效果,也能夠單獨設置某個的默認,以前我就是單獨設置了音效的默認
有四個參數能夠選擇,由英文也能夠看出是什麼意思了吧,這裏就很少解釋了
這裏我就簡單地說兩種,長文本顯示和大圖片顯示,更多的請看這一篇Android開發——Notification通知的各類Style詳解
1、BigTextStyle 長文本顯示
Intent intent = new Intent(this,Main2Activity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);
NotificationManager manger = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("this is cotenttitle")//設置標題,必要
.setContentText("contentText")//設置內容,必要
.setWhen(System.currentTimeMillis())//設置時間,默認設置,能夠忽略
.setSmallIcon(R.mipmap.ic_launcher)//設置通知欄的小圖標,必須設置
.setAutoCancel(true)//設置自動刪除,點擊通知欄信息以後系統會自動將狀態欄的通知刪除
.setContentIntent(pendingIntent)//設置在通知欄中點擊該信息以後的跳轉,參數是一個pendingIntent
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
//設置大圖標,未設置時使用小圖標代替,拉下通知欄顯示的那個圖標
//設置大圖片 BitmpFactory.decodeResource(Resource res,int id) 根據給定的資源Id解析成位
.setStyle(new NotificationCompat.BigTextStyle().bigText("長內容長內容長內容長內容長內容長內容長內容長內容長內容長內容長
內容長內容長內容長內容長內容長內容長內容長內容長內容長內容"))
.build();
manger.notify(1,notification);
BigPictureStyle 大圖片顯示
Intent intent = new Intent(this,Main2Activity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);
NotificationManager manger = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("this is cotenttitle")//設置標題,必要
.setContentText("contentText")//設置內容,必要
.setWhen(System.currentTimeMillis())//設置時間,默認設置,能夠忽略
.setSmallIcon(R.mipmap.ic_launcher)//設置通知欄的小圖標,必須設置
.setAutoCancel(true)//設置自動刪除,點擊通知欄信息以後系統會自動將狀態欄的通知刪除
.setContentIntent(pendingIntent)//設置在通知欄中點擊該信息以後的跳轉,參數是一個pendingIntent
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
//設置大圖標,未設置時使用小圖標代替,拉下通知欄顯示的那個圖標
//設置大圖片 BitmpFactory.decodeResource(Resource res,int id) 根據給定的資源Id解析成位
.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(),R.drawable.index)))
.build();
manger.notify(1,notification);
參數是一個RemoteView,由名字大概能夠知道是一個View,定義一個佈局文件,以後與其綁定,以後,爲佈局中的按鈕設置onClick事件,以後調用setContent,remoteView做爲參數傳入
RemoteViews remoteView = new RemoteViews(getPackageName(),R.layout.notification); remoteView.setOnClickPendingIntent(R.id.last_btn,pendingIntent);
我的以爲自定義佈局能夠作成像音樂播放器的通知欄那樣,不過,今天就暫時簡單的學習,以後有學到再補充