Notification 詳解

一. Notification的介紹佈局

    普通視圖:
ui

    

  1. Content title 標題this

  2. Large icon 大圖標 (若是不設置,這小圖標會自動應用到大圖標上)spa

  3. Content text 內容code

  4. Content info 顯示有多少條信息對象

  5. Small icon 小圖標事件

  6. Time 時間 能夠調用 setWhen() 設置,若是爲默認的話,則是系統默認時間(通常不用設置就是系統默認時間)get


   視圖:string

    

大視圖只比普通視圖多了一個7it

注意:在設置Notification 時 1 ,3 ,5 這三個屬性是不可省略的


    肯定進度的進度條通知:

            

    不肯定進度的進度條通知:

            

    自定義視圖的通知:

            


二 . 建立普通視圖的Notification   

    建立一個Notification 首先須要用到兩個包:Notification 或V4包中的 NotificationCompat 和 NotificationManager(消息管理器)

    1.新建一個Notification對象

        之前的方法是直接 new Notification();  如今通常用 Notification 中的一個內部靜態類 Notification.Builder

            NotificationCompat.Builder builder = new NotificationCompat.Builder(this);  這裏用的是 v4 中的類,有助於程序向下兼容

    2.設置Notification的屬性

        builder.setContentTitle("新的短消息")    //設置通知標題

        .setContentText("晚上的課你還上不上?")    //設置內容

        .setSmallIcon(R.drawable.ofm_feedback_icon)    //設置小圖標,若是不設置大圖標那麼,小圖標就會變成大圖標

        .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))    //設置大圖標

        .setNumber(5)    //通知的數據 ,即上圖中的第5項

        .setSound(Uri.parse("/storage/sdcard0/ttpod/song/bb.mp3"))    //設置聲音

        .setVibrate(new long[]{0,400,200,500})    //設置震動,{不震動的時間,震動持續時間,不震動的時間,震動持續時間。。。}

        .setTicker("你有新的短消息")    //如圖通知發送後會先在 這個位置彈出Ticker和小圖標

        .setDefaults(Notification.DEFAULT_ALL)            //設置默認的聲音,閃光燈,震動 , 就是用系統默認的設置

        .setOngoing(true);        //設置是否爲常駐通知,若是是則用戶手動是沒法清除的,必須由程序清除,好比關閉程序時自動清除

        .setAutoCancel(true);    //設置爲自動清除,若是設置了單擊通知事件的話;即單擊通知後,通知會自動清除,前提是設置了通知的點擊事件

    3.爲通知設置點擊後的事件

        這裏要用到一個類:PendingIntent 它其中封裝的是一個延遲的Intent 

        首先建立一個 Intent 對象 :Intent intent = new Intent(this,MainActivity2.class);

        而後獲取一個PendingIntent 對象並將Intent傳入 :   

                PendingIntent pi = PendingIntent.getActivity(this,3,intent,PendingIntent.FLAG_UPDATE_CURRENT); 

                //這裏getActivity表示獲取的是一個能夠開啓一個Activity的 PendingIntent ,還能夠getBroadcast,getService

        builder.setContentIntent(pi);  將PendingIntent設置進去

    4.獲取通知管理器NotificationManager

        通知管理器是系統提供的,所以不管在什麼時候何地獲取的NotificationManager對象都是同一個對象

        獲取NotificationManager :

        NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

        NotificationManager的主要方法:

                        notify(int id,Notification n)  發送一個通知,併爲其添加一個id

                        cancel(String tag,int id)     清除一個通知,經過id,tag 是一個標記能夠不用寫

                        cancelAll();    清除全部的通知

        Notification n = builder.build(); 經過builder 獲取Notification對象

        notificationManager.notify(5,n) 發送通知


 三.建立大視圖的Notification

        若是要設置大視圖的Notification 只需將如下代碼加入上訴步奏便可

        注意:大視圖 只有在Android 4.1 版本之後才支持(4.1也不支持)

         //設置寬視圖內容

        NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle(); 獲取大視圖風格

                        String[] events = {"string","string","string"}; 大視圖的內容

                for (int i=0;i<events.length;i++){

                    inboxStyle.addLine(events[i]);        將內容分行添加

                        }

                    builder.setStyle(inboxStyle); 設置風格


四.建立肯定進度的進度條的Notification

                    進度條通知就是不斷的發送Id相同的通知,不斷的更新這個通知,若是id相同的話會覆蓋上一個通知

                    其餘步奏和普通視圖是同樣的只要 添加一個 set.Progress(int i, int j , boolean b);

                        i 表示總進度,j表示當前進度,b 表示是否爲不肯定的進度條模式

                    下圖是模擬下載進度條通知:

                        

                        

        


五.建立不肯定進度的進度條通知

        其餘步奏和普通視圖同樣,只需添加這個屬性便可

        builder.setProgress(0,0,true);

                                                                                


六.建立自定義視圖的通知

        自定義視圖須要用到一個遠程視圖類:RemoteViews

          首先建立一個佈局文件,做爲通知的佈局,注意高度不能超過256dp

          而後建立RemoteViews 並將 本身的佈局傳入

          再用builder.setContent(RemoteViews r); 將RemoteViews 設置進去

          在自定義視圖中 setContentTitle() 和 setContentText() 都不起做用

        



 







相關文章
相關標籤/搜索