1. 程式人生 > >Android Notification通知使用(從基本到高階)

Android Notification通知使用(從基本到高階)

目錄

一、通知的基本使用

(1)、效果圖

(2)、使用步驟

(3)、細節使用

二、通知的進階使用

(1)、設定聲音

(2)、設定振動

(3)、設定LED燈閃爍

(4)、進行預設效果設定

三、通知的高階使用

(1)、設定富文字資訊

(2)、設定帶有圖片訊息

(3)、設定通知重要程度

一、通知的基本使用

(1)、效果圖

在這裡插入圖片描述

(2)、使用步驟

1、首先需要一個NotificationManager來進行管理,可以呼叫Context的getSystemService方法獲取,這裡傳入一個Context。NOTIFICAATION_SERVICE即可。

NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

2、需要使用一個Builder構造器來建立Notification物件,由於API不同會造成不同版本的通知出現不穩定的問題, 所以這裡使用NotificationCompat類來相容各個版本。

Notification notification = new NotificationCompat.Builder(MainActivity.this).build();

3、基本設定

.setContentTitle("這是測試通知標題")  //設定標題
.setContentText("這是測試通知內容") //設定內容
.setWhen(System.currentTimeMillis())  //設定時間
.setSmallIcon(R.mipmap.ic_launcher)  //設定小圖示
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))   //設定大圖示

4、呼叫notify()讓通知顯示出來(第一個引數是ID, 保證每個通知所指定的id都是不同的,第二個引數是notification物件)

manager.notify(1,notification);

(3)、細節使用

  <一>、跳轉功能: 使用PendingIntent進行通知點選跳轉功能。 PendingIntent的用法: (1)、通過getActivity()、getBroadcast()、getService()方法獲取例項 (2)、引數(Context context, int requestCode, Intent intent, int flags) 第一個引數:Context 第二個引數:requestCode 一般用不到 ,通常設定為0 第三個引數:intent 第四個引數:flags 用於確定PendingIntent的行為。這裡傳0就行 (3)、使用方法

 Intent intent = new Intent(MainActivity.this,NotificationActivity.class);
                PendingIntent pi = PendingIntent.getActivity(MainActivity.this,0,intent,0);
                NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                Notification notification = new NotificationCompat.Builder(MainActivity.this)
                        .setContentTitle("這是測試通知標題")  //設定標題
                        .setContentText("這是測試通知內容") //設定內容
                        .setWhen(System.currentTimeMillis())  //設定時間
                        .setSmallIcon(R.mipmap.ic_launcher)  //設定小圖示  只能使用alpha圖層的圖片進行設定
                        .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))   //設定大圖示
                        .setContentIntent(pi)
 //                       .setAutoCancel(true)
                        .build();
                manager.notify(1,notification);

  <二>、通知取消: 我們發現當點選檢視通知後,通知欄中還保留著通知圖示,我們怎麼取消呢 (1)、使用setAutoCancel(true)

Notification notification = new NotificationCompat.Builder(MainActivity.this)
                        ...
                       .setAutoCancel(true) //設定為自動取消
                        .build();
                manager.notify(1,notification);

(2)、在跳轉後的Activity中

 NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        manager.cancel(1);

這裡的cancle傳入的是一個1,就是我們建立Notification中指定的通知的ID

二、通知的進階使用

都是一行程式碼進行設定, 這裡就不分開寫了

 Notification notification = new NotificationCompat.Builder(MainActivity.this)
                        ...
                        .setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Luna.ogg"))) //設定通知提示音
                        .setVibrate(new long[]{0,1000,1000,1000}) //設定振動, 需要新增許可權  <uses-permission android:name="android.permission.VIBRATE"/>
                        .setLights(Color.GREEN,1000,1000)//設定前置LED燈進行閃爍, 第一個為顏色值  第二個為亮的時長  第三個為暗的時長
                        .setDefaults(NotificationCompat.DEFAULT_ALL)  //使用預設效果, 會根據手機當前環境播放鈴聲, 是否振動
                        .build();
                manager.notify(1,notification);

三、通知的高階使用

(1)、設定富文字資訊

當我們使用setContentText的時候, 內容為很長的字串, 顯示結果是這樣的: 在這裡插入圖片描述 內容顯示不全。如果產品就要顯示完全的內容文字我們怎麼辦。 可以使用setStyle()

 Notification notification = new NotificationCompat.Builder(MainActivity.this)
                      ...
                        .setStyle(new NotificationCompat.BigTextStyle().bigText("這是一段很長的文字很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長很長"))                      
                        .build();
                manager.notify(1,notification);

我們在setStyle()方法中建立了NotificationCompat.BigTextStyle物件。這個物件就是用於封裝長文字資訊的,呼叫它的bigText()方法將文字傳入就行。我們看一下顯示效果。 在這裡插入圖片描述

(2)、設定帶有圖片訊息

在這裡插入圖片描述

 Notification notification = new NotificationCompat.Builder(MainActivity.this)
                      ...
                        .setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)))             
                        .build();
                manager.notify(1,notification);

通知內加入圖片(大圖)中的呼叫方法

(3)、設定通知重要程度

 Notification notification = new NotificationCompat.Builder(MainActivity.this)
                      ...
                        .setPriority(NotificationCompat.PRIORITY_MAX)
                        .build();
                manager.notify(1,notification);

setPriority方法接收一個整形引數用於設定這條通知的重要程度, 有五個值可以選擇 PRIORITY_DEFAULT:表示預設重要程度,和不設定效果一樣 PRIORITY_MIN:表示最低的重要程度。系統只會在使用者下拉狀態列的時候才會顯示 PRIORITY_LOW:表示較低的重要性,系統會將這類通知縮小,或者改變顯示的順序,將排在更重要的通知之後。 PRIORITY_HIGH:表示較高的重要程度,系統可能會將這類通知方法,或改變顯示順序,比較靠前 PRIORITY_MAX:最重要的程度, 會彈出一個單獨訊息框,讓使用者做出相應。 在這裡插入圖片描述 設定為MAX顯示情況。 好了,這些就是通知欄的使用了,謝謝閱讀。