国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

詳解Android中使用Notification實現進度通知欄(示例三)

2019-12-12 04:23:31
字體:
來源:轉載
供稿:網友

我們在使用APP的過程中,軟件會偶爾提示我們進行版本更新,我們點擊確認更新后,會在通知欄顯示下載更新進度(已知長度的進度條)以及安裝情況(不確定進度條),這就是我們今天要實現的功能。實現效果如下:

在代碼實現功能前,我們先解釋進度條的兩種狀態:

(1)顯示一個已知長度的進度條指示器(Displaying a fixed-duration progress indicator)

為了能夠顯示一個確定的進度條,通過調用setProgress() setProgress(max, progress, false)給你的通知加上進度條。然后發布通知。然后,隨著操作的進度,增加進度值,然后更新通知。在操作結束的時候,進度值應該等于最大值。通常的方式是調用setProgress()來設置最大值為100,然后去增加進度完成的百分比。你可以在操作完成的時候顯示進度條,也可以移除掉它。在這樣的情況下,記住要去更新通知的文本,顯示操作已經完成了。調用setProgress(0, 0, false)來移除進度條。

public Builder setProgress(int max, int progress, boolean indeterminate)

其中max為進度最大值,progress為當前進度,indeterminate為不確定的(設置為true,則為不確定的,反之則確定)

(2)顯示一個持續的活動指示器(Displayinga continue activity indicator)

為了能使用不確定的活動指示器,使用setProgress(0, 0, true)方法來給你的通知添加(前兩個參數被忽略了),然后發布通知。除非去指定它的動畫效果,要不然,這個指示器的樣式都是一樣的。

在操作開始的時候發布通知,這個動畫將一直執行,直到你修改通知,當操作完成的時候,調用setProgress(0, 0,false)來更新通知去移除活動指示器。我們總是這樣做,除非你想要讓操作完成的時候,動畫效果還在運行。

也請記住當操作完成的時候更新下通知里的文本。

知道了這兩點,我們開始實現代碼:

layout中點擊觸發按鈕的布置:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:id="@+id/activity_content"  android:layout_width="match_parent"  android:layout_height="match_parent"  tools:context="com.example.administrator.day12.ContentActivity">  <TextView    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center"    android:textSize="30sp"    android:text="顯示進度實圖" /></LinearLayout>

java代碼實現MainActivity.java:

import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Context;import android.content.Intent;import android.graphics.BitmapFactory;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.app.NotificationCompat;import android.view.View;import android.widget.RemoteViews;public class MainActivity extends AppCompatActivity {  //定義notification實用的ID  private static final int NO_3 =0x3;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);  }  public void show3(View v){    final NotificationCompat.Builder builder = new NotificationCompat.Builder(this);    builder.setSmallIcon(R.mipmap.huangyueying);    builder.setContentTitle("下載");    builder.setContentText("正在下載");    final NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);    manager.notify(NO_3, builder.build());    builder.setProgress(100,0,false);    //下載以及安裝線程模擬    new Thread(new Runnable() {      @Override      public void run() {        for(int i=0;i<100;i++){          builder.setProgress(100,i,false);          manager.notify(NO_3,builder.build());          //下載進度提示          builder.setContentText("下載"+i+"%");          try {            Thread.sleep(50);//演示休眠50毫秒          } catch (InterruptedException e) {            e.printStackTrace();          }        }        //下載完成后更改標題以及提示信息        builder.setContentTitle("開始安裝");        builder.setContentText("安裝中...");        //設置進度為不確定,用于模擬安裝        builder.setProgress(0,0,true);        manager.notify(NO_3,builder.build());//        manager.cancel(NO_3);//設置關閉通知欄      }    }).start();  }}

我們這里只是簡單的模擬效果實現,為了讓大家了解并熟練運用屬性方法,為后期的實體項目做技術儲備。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呼伦贝尔市| 芦山县| 辽宁省| 辽中县| 民和| 华容县| 乌审旗| 拉孜县| 连江县| 吴桥县| 茌平县| 沙坪坝区| 广州市| 宁国市| 郎溪县| 东山县| 北宁市| 宝清县| 太仆寺旗| 大姚县| 甘孜县| 漠河县| 德保县| 普兰店市| 阿合奇县| 五原县| 乡宁县| 永城市| 广南县| 汾阳市| 五河县| 淮阳县| 建德市| 紫金县| 永川市| 迁安市| 旺苍县| 手机| 三门峡市| 商水县| 仙桃市|