亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android編程之通知欄的用法小結(jié)

 更新時間:2017年01月30日 10:12:40   作者:books1958  
這篇文章主要介紹了Android編程之通知欄的用法,結(jié)合實例形式總結(jié)分析了Android通知欄的相關(guān)操作技巧,包括發(fā)送、刪除通知、自定義布局等操作實現(xiàn)方法,需要的朋友可以參考下

本文實例總結(jié)了Android編程中通知欄的用法。分享給大家供大家參考,具體如下:

很久沒有使用Android的通知功能了,今天把兩年前的代碼搬出來一看,發(fā)現(xiàn)很多方法都廢棄了,代碼中各種刪除線看的十分不爽。于是乎,打開Google,查看官方文檔,學習最新的發(fā)送通知欄消息的方法。

本文中的代碼均參照谷歌官方文檔編寫:

http://developer.android.com/guide/topics/ui/notifiers/notifications.html

1.首先,獲取系統(tǒng)的通知服務:

復制代碼 代碼如下:
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

2.發(fā)送一個最簡單的通知

public void simpleNotice(View view) {
    //此Builder為android.support.v4.app.NotificationCompat.Builder中的,下同。
    Builder mBuilder = new Builder(this);
    //系統(tǒng)收到通知時,通知欄上面顯示的文字。
    mBuilder.setTicker("天津,晴,2~15度,微風");
    //顯示在通知欄上的小圖標
    mBuilder.setSmallIcon(R.drawable.consult_answer);
    //通知標題
    mBuilder.setContentTitle("天氣預報");
    //通知內(nèi)容
    mBuilder.setContentText("天津,晴,2~15度,微風");
    //設置大圖標,即通知條上左側(cè)的圖片(如果只設置了小圖標,則此處會顯示小圖標)
    mBuilder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.share_sina));
    //顯示在小圖標左側(cè)的數(shù)字
    mBuilder.setNumber(6);
    //設置為不可清除模式
    mBuilder.setOngoing(true);
    //顯示通知,id必須不重復,否則新的通知會覆蓋舊的通知(利用這一特性,可以對通知進行更新)
    nm.notify(1, mBuilder.build());
}

3.刪除一個通知。參數(shù)即為通知的id

nm.cancel(1);

4.發(fā)送一個通知,點擊通知后跳轉(zhuǎn)到一個Activity,從這個Activity返回后,進入程序內(nèi)的某一個頁面(一般為主頁)

//點擊通知進入一個Activity,點擊返回時進入指定頁面。
public void resultActivityBackApp(View view) {
    Builder mBuilder = new Builder(this);
    mBuilder.setTicker("通知標題2");
    mBuilder.setSmallIcon(R.drawable.ic_launcher);
    mBuilder.setContentTitle("通知標題2");
    mBuilder.setContentText("點擊通知進入一個Activity,點擊返回時進入指定頁面。");
    //設置點擊一次后消失(如果沒有點擊事件,則該方法無效。)
    mBuilder.setAutoCancel(true);
    //點擊通知之后需要跳轉(zhuǎn)的頁面
    Intent resultIntent = new Intent(this, ResultActivityBackApp.class);
    //使用TaskStackBuilder為“通知頁面”設置返回關(guān)系
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    //為點擊通知后打開的頁面設定 返回 頁面。(在manifest中指定)
    stackBuilder.addParentStack(ResultActivityBackApp.class);
    stackBuilder.addNextIntent(resultIntent);
    PendingIntent pIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
    mBuilder.setContentIntent(pIntent);
    // mId allows you to update the notification later on.
    nm.notify(2, mBuilder.build());
}

同時,需要在manifest中為點擊通知后打開的Activity指定父Activity.

<activity
  android:name=".ResultActivityBackApp"
  android:parentActivityName=".MainActivity">
  <meta-data
    android:name="android.support.PARENT_ACTIVITY"
    android:value=".MainActivity" />
</activity>

(其中,activity的屬性parentActivityName為API 16中的屬性,meta-data中的代碼為兼容API 16以下。因此,對于大多數(shù)程序,這兩個地方都得寫。)

5.和上述4類似,只是在打開的Activity中返回時回到home頁

//點擊通知進入一個Activity,點擊返回時回到桌面
public void resultActivityBackHome(View view) {
    Builder mBuilder = new Builder(this);
    mBuilder.setTicker("通知標題3");
    mBuilder.setSmallIcon(R.drawable.ic_launcher);
    mBuilder.setContentTitle("通知標題3");
    mBuilder.setContentText("點擊通知進入一個Activity,點擊返回時回到桌面");
    //設置點擊一次后消失(如果沒有點擊事件,則該方法無效。)
    mBuilder.setAutoCancel(true);
    Intent notifyIntent = new Intent(this, ResultActivityBackHome.class);
    notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent pIntent = PendingIntent.getActivity(this, 0, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    mBuilder.setContentIntent(pIntent);
    nm.notify(3, mBuilder.build());
}

6.帶進度條的通知

public void progressNotice(View view) {
    final Builder mBuilder = new Builder(this);
    mBuilder.setTicker("通知標題4");
    mBuilder.setContentTitle("Picture Download")
        .setContentText("Download in progress")
        .setSmallIcon(R.drawable.ic_launcher);
    // Start a lengthy operation in a background thread
    new Thread(new Runnable() {
      @Override
      public void run() {
        int progress;
        for (progress = 0; progress <= 100; progress++) {
          // Sets the progress indicator to a max value, the current completion percentage,
          // and "determinate" state
          mBuilder.setProgress(100, progress, false);
          //不明確進度的進度條
//          mBuilder.setProgress(0, 0, true);
          nm.notify(4, mBuilder.build());
          // 模擬延時
          try {
            Thread.sleep(200);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
        }
        // When the loop is finished, updates the notification
        mBuilder.setContentText("Download complete");
        // Removes the progress bar
        mBuilder.setProgress(0, 0, false);
        nm.notify(4, mBuilder.build());
      }
    }
    ).start();
}

7.擴展布局的通知。按住通知條下滑,可以查看更詳細的內(nèi)容

public void expandLayoutNotice(View view) {
    Builder mBuilder = new Builder(this);
    mBuilder.setTicker("通知標題5");
    mBuilder.setSmallIcon(R.drawable.ic_launcher);
    mBuilder.setContentTitle("通知標題5");
    mBuilder.setContentText("按住通知下拉可顯示擴展布局");
    NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
    String[] events = new String[]{"Beijing", "Tianjin", "Shanghai", "Guangzhou"};
    // 設置擴展布局的標題
    inboxStyle.setBigContentTitle("Event tracker details:");
    for (String s : events) {
      inboxStyle.addLine(s);
    }
    mBuilder.setStyle(inboxStyle);
    nm.notify(5, mBuilder.build());
}

8.自定義布局的通知欄。(根據(jù)谷歌的官方文檔不推薦這么做,因為使用這種方式時,對不同屏幕進行適配需要考慮的因素太多。而且,通知欄應該展示的就是最簡明扼要的信息,對于大多數(shù)程序默認的布局已經(jīng)足夠了。)

//自定義布局的通知
public void customLayoutNotice(View view) {
    Builder mBuilder = new Builder(this);
    mBuilder.setTicker("通知標題6");
    mBuilder.setTicker("通知標題6");
    mBuilder.setSmallIcon(R.drawable.ic_launcher);
    RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.custom_layout_notice);
    mBuilder.setContent(remoteViews);
    //為RemoteViews上的按鈕設置文字
    remoteViews.setCharSequence(R.id.custom_layout_button1, "setText", "Button1");
    remoteViews.setCharSequence(R.id.custom_layout_button2, "setText", "Button2");
    //為RemoteViews上的按鈕設置點擊事件
    Intent intent1 = new Intent(this, CustomLayoutResultActivity.class);
    intent1.putExtra("content", "From button1 click!");
    PendingIntent pIntentButton1 = PendingIntent.getActivity(this, 0, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
    remoteViews.setOnClickPendingIntent(R.id.custom_layout_button1, pIntentButton1);
    Intent intent2 = new Intent(this, CustomLayoutResultActivity.class);
    intent2.putExtra("content", "From button2 click!");
    PendingIntent pIntentButton2 = PendingIntent.getActivity(this, 1, intent2, PendingIntent.FLAG_UPDATE_CURRENT);
    remoteViews.setOnClickPendingIntent(R.id.custom_layout_button2, pIntentButton2);
    nm.notify(6, mBuilder.build());
}

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對大家Android程序設計有所幫助。

相關(guān)文章

  • Android動態(tài)使用VectorDrawable過程詳解

    Android動態(tài)使用VectorDrawable過程詳解

    這篇文章主要介紹了Android動態(tài)使用VectorDrawable過程,2014年6月26日的I/O 2014開發(fā)者大會上谷歌正式推出了Android L,它帶來了全新的設計語言Material Design,新的API也提供了這個類VectorDrawable
    2023-02-02
  • Android開發(fā)之Button事件實現(xiàn)與監(jiān)聽方法總結(jié)

    Android開發(fā)之Button事件實現(xiàn)與監(jiān)聽方法總結(jié)

    這篇文章主要介紹了Android開發(fā)之Button事件實現(xiàn)與監(jiān)聽方法,結(jié)合實例形式總結(jié)分析了Android開發(fā)中Button事件的兩種實現(xiàn)方法以及針對Button控件的幾種常用監(jiān)聽方法,需要的朋友可以參考下
    2016-01-01
  • android studio的安裝(史上最詳細)

    android studio的安裝(史上最詳細)

    這篇文章主要介紹了android studio的安裝(史上最詳細),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Android實現(xiàn)雙擊返回鍵退出應用實現(xiàn)方法詳解

    Android實現(xiàn)雙擊返回鍵退出應用實現(xiàn)方法詳解

    這篇文章主要為大家詳細介紹了Android實現(xiàn)雙擊返回鍵退出應用的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Android Dialog對話框用法實例詳解

    Android Dialog對話框用法實例詳解

    這篇文章主要介紹了Android Dialog對話框用法,結(jié)合實例形式分析了Android使用Dialog對話框過程中所涉及的創(chuàng)建、保存、回復等操作相關(guān)技巧與注意事項,需要的朋友可以參考下
    2016-07-07
  • Android實現(xiàn)圖片預覽與保存功能

    Android實現(xiàn)圖片預覽與保存功能

    在App開發(fā)中,通常為了省流提高加載速度提升用戶體驗我們通常在列表中或新聞中的插圖都是以縮略圖壓縮過的圖片來進行展示,當用戶點擊圖片時我們再去加載真正像素的大圖讓用戶預覽。本文將利用Flutter實現(xiàn)這一功能,需要的可以參考一下
    2022-04-04
  • Android自定義View實現(xiàn)數(shù)字密碼鎖

    Android自定義View實現(xiàn)數(shù)字密碼鎖

    這篇文章主要為大家詳細介紹了Android自定義View實現(xiàn)數(shù)字密碼鎖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android中ADB命令用法大結(jié)局

    Android中ADB命令用法大結(jié)局

    adb全名android debug bridge 安卓調(diào)試橋,下面這篇文章主要給大家介紹了關(guān)于Android中ADB命令用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-08-08
  • Android中ListView的item點擊沒有反應的解決方法

    Android中ListView的item點擊沒有反應的解決方法

    這篇文章主要介紹了Android中ListView的item點擊沒有反應的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • JNI方法實現(xiàn)圖片壓縮(壓縮率極高)

    JNI方法實現(xiàn)圖片壓縮(壓縮率極高)

    這篇文章主要給大家介紹了一種JNI方法實現(xiàn)圖片壓縮(壓縮率極高)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11

最新評論