Android 通知之 Notification

weixin_34402090發表於2014-05-22

Notifications | Android Developers
http://developer.android.com/guide/topics/ui/notifiers/notifications.html#NotificationResponse

 

Android--通知之Notification
http://www.cnblogs.com/plokmju/p/android_Notification.html

 

小圖示,使用setSamllIcon()方法設定。
標題,使用setContentTitle()方法設定。
文字內容,使用setContentText()方法設定。

PendingIntent提供了多個靜態的getXxx()方法,用於獲得適用於不同場景的PendingIntent物件。一般需要傳遞的幾個引數都很常規,只介紹一個flag引數,用於標識PendingIntent的構造選擇:
FLAG_CANCEL_CURRENT:如果構建的PendingIntent已經存在,則取消前一個,重新構建一個。
FLAG_NO_CREATE:如果前一個PendingIntent已經不存在了,將不再構建它。
FLAG_ONE_SHOT:表明這裡構建的PendingIntent只能使用一次。
FLAG_UPDATE_CURRENT:如果構建的PendingIntent已經存在,則替換它,常用。

Notification視覺風格
  Notification有兩種視覺風格,一種是標準檢視(Normal view)、一種是大檢視(Big view)。標準檢視在Android中各版本是通用的,但是對於大檢視而言,僅支援Android4.1+的版本。

從官方文件瞭解到,一個標準檢視顯示的大小要保持在64dp高,寬度為螢幕標準。
標準檢視的通知主體內容有一下幾個:
1.通知標題。
2.大圖示。
3.通知內容。
4.通知訊息。
5.小圖示。
6.通知的時間,一般為系統時間,也可以使用setWhen()設定。

而對於大檢視(Big View)而言,它的細節區域只能顯示256dp高度的內容,並且只對Android4.1+之後的裝置才支援,它比標準檢視不一樣的地方,均需要使用setStyle()方法設定

setStyle()傳遞一個NotificationCompat.Style物件,它是一個抽象類,Android為我們提供了三個實現類,用於顯示不同的場景。分別是:

setStyle()傳遞一個NotificationCompat.Style物件,它是一個抽象類,Android為我們提供了三個實現類,用於顯示不同的場景。分別是:

NotificationCompat.BigPictureStyle, 在細節部分顯示一個256dp高度的點陣圖。
NotificationCompat.BigTextStyle,在細節部分顯示一個大的文字塊。
NotificationCompat.InboxStyle,在細節部分顯示一段行文字。

Notification.Builder類中提供一個setProgress(int max,int progress,boolean indeterminate)方法用於設定進度條,max用於設定進度的最大數,progress用於設定當前的進度,indeterminate用於設定是否是一個確定進度的進度條。通過indeterminate的設定,可以實現兩種不同樣式的進度條,一種是有進度刻度的(true),一種是迴圈流動的(false)。

一種是有進度刻度的(false),一種是迴圈流動的(true
builder.setProgress(0, 0, true);//設定為true,表示流動
builder.setProgress(100, 100, false);//設定為false,表示刻度

RemoteViews contentViews = new RemoteViews(getPackageName(),
R.layout.custom_notification);
contentViews.setImageViewResource(R.id.imageNo, R.drawable.btm1);
contentViews.setTexViewText(R.id.titleNo, "xxx");
contentViews.setTexViewText(R.id.textNo, "xxx");

NotificationCompat.Builder.setContent(RemoteViews)

設定提示響應
對於有些通知,需要呼叫一些裝置的資源,使使用者能更快的發現有新通知,一般可設定的響應有:鈴聲、閃光燈、震動。對於這三個屬性,NotificationCompat.Builder提供了三個方法設定:
可設定的響應有:鈴聲、閃光燈、震動

setSound(Uri sound):設定一個鈴聲,用於在通知的時候響應。傳遞一個Uri的引數,格式為“file:///mnt/sdcard/Xxx.mp3”。
setLights(int argb, int onMs, int offMs):設定前置LED燈的閃爍速率,持續毫秒數,停頓毫秒數。
setVibrate(long[] pattern):設定震動的模式,以一個long陣列儲存毫秒級間隔的震動。
  大多數時候,我們並不需要設定一個特定的響應效果,只需要遵照使用者裝置上系統通知的效果即可,那麼可以使用setDefaults(int)方法設定預設響應引數,在Notification中,對它的引數使用常量定義了,我們只需使用即可:

DEFAULT_ALL:鈴聲、閃光、震動均系統預設。
DEFAULT_SOUND:系統預設鈴聲。
DEFAULT_VIBRATE:系統預設震動。
DEFAULT_LIGHTS:系統預設閃光。


  而在Android中,如果需要訪問硬體裝置的話,是需要對其進行授權的,所以需要在清單檔案AndroidManifest.xml中增加兩個授權,分別授予訪問振動器與閃光燈的許可權:

1 <!-- 閃光燈許可權 -->
2 <uses-permission android:name="android.permission.FLASHLIGHT"/>
3 <!-- 振動器許可權 -->
4 <uses-permission android:name="android.permission.VIBRATE"/>

相關文章