詳解Android中使用Notification實現(xiàn)進(jìn)度通知欄(示例三)
我們在使用APP的過程中,軟件會偶爾提示我們進(jìn)行版本更新,我們點擊確認(rèn)更新后,會在通知欄顯示下載更新進(jìn)度(已知長度的進(jìn)度條)以及安裝情況(不確定進(jìn)度條),這就是我們今天要實現(xiàn)的功能。實現(xiàn)效果如下:
在代碼實現(xiàn)功能前,我們先解釋進(jìn)度條的兩種狀態(tài):
(1)顯示一個已知長度的進(jìn)度條指示器(Displaying a fixed-duration progress indicator)
為了能夠顯示一個確定的進(jìn)度條,通過調(diào)用setProgress() setProgress(max, progress, false)給你的通知加上進(jìn)度條。然后發(fā)布通知。然后,隨著操作的進(jìn)度,增加進(jìn)度值,然后更新通知。在操作結(jié)束的時候,進(jìn)度值應(yīng)該等于最大值。通常的方式是調(diào)用setProgress()來設(shè)置最大值為100,然后去增加進(jìn)度完成的百分比。你可以在操作完成的時候顯示進(jìn)度條,也可以移除掉它。在這樣的情況下,記住要去更新通知的文本,顯示操作已經(jīng)完成了。調(diào)用setProgress(0, 0, false)來移除進(jìn)度條。
public Builder setProgress(int max, int progress, boolean indeterminate)
其中max為進(jìn)度最大值,progress為當(dāng)前進(jìn)度,indeterminate為不確定的(設(shè)置為true,則為不確定的,反之則確定)
(2)顯示一個持續(xù)的活動指示器(Displayinga continue activity indicator)
為了能使用不確定的活動指示器,使用setProgress(0, 0, true)方法來給你的通知添加(前兩個參數(shù)被忽略了),然后發(fā)布通知。除非去指定它的動畫效果,要不然,這個指示器的樣式都是一樣的。
在操作開始的時候發(fā)布通知,這個動畫將一直執(zhí)行,直到你修改通知,當(dāng)操作完成的時候,調(diào)用setProgress(0, 0,false)來更新通知去移除活動指示器。我們總是這樣做,除非你想要讓操作完成的時候,動畫效果還在運行。
也請記住當(dāng)操作完成的時候更新下通知里的文本。
知道了這兩點,我們開始實現(xiàn)代碼:
layout中點擊觸發(fā)按鈕的布置:
<?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="顯示進(jìn)度實圖" /> </LinearLayout>
java代碼實現(xiàn)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()); //下載進(jìn)度提示 builder.setContentText("下載"+i+"%"); try { Thread.sleep(50);//演示休眠50毫秒 } catch (InterruptedException e) { e.printStackTrace(); } } //下載完成后更改標(biāo)題以及提示信息 builder.setContentTitle("開始安裝"); builder.setContentText("安裝中..."); //設(shè)置進(jìn)度為不確定,用于模擬安裝 builder.setProgress(0,0,true); manager.notify(NO_3,builder.build()); // manager.cancel(NO_3);//設(shè)置關(guān)閉通知欄 } }).start(); } }
我們這里只是簡單的模擬效果實現(xiàn),為了讓大家了解并熟練運用屬性方法,為后期的實體項目做技術(shù)儲備。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android編程實現(xiàn)的簡易路徑導(dǎo)航條功能示例
這篇文章主要介紹了Android編程實現(xiàn)的簡易路徑導(dǎo)航條功能,結(jié)合實例形式分析了Android結(jié)合視圖、布局及路徑操作實現(xiàn)導(dǎo)航條功能的相關(guān)技巧,需要的朋友可以參考下2017-01-01Android Cocos Creator游戲開發(fā)平臺打包優(yōu)化實現(xiàn)方案
Cocos Creator是一款輕量、高效、免費開源的跨平臺游戲引擎,同時也是實時3D內(nèi)容創(chuàng)作平臺,不僅支持2D、3D的游戲開發(fā),同時在HMI、IoT、XR、虛擬人偶等領(lǐng)域,均可提供一套完善的行業(yè)解決方案2022-11-11淺談Android Classloader動態(tài)加載分析
這篇文章主要介紹了淺談Android Classloader動態(tài)加載分析,詳細(xì)的介紹了ClassLoader概念、分類,具有一定的參考價值,有興趣的可以了解一下2018-03-03Android 中使用 dlib+opencv 實現(xiàn)動態(tài)人臉檢測功能
完成 Android 相機(jī)預(yù)覽功能以后,在此基礎(chǔ)上我使用 dlib 與 opencv 庫做了一個關(guān)于人臉檢測的 demo。接下來通過本文給大家介紹Android 中使用 dlib+opencv 實現(xiàn)動態(tài)人臉檢測功能 ,需要的朋友可以參考下2018-11-11Android中方法數(shù)超限問題與啟動優(yōu)化詳解
這篇文章主要給大家介紹了Android中方法數(shù)超限問題與啟動優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11開源電商app常用標(biāo)簽"hot"之第三方開源LabelView
這篇文章主要介紹了開源電商app常用標(biāo)簽"hot"之第三方開源LabelView,對開源電商app相關(guān)資料感興趣的朋友一起學(xué)習(xí)吧2015-12-12Android實現(xiàn)手勢控制ImageView圖片大小
這篇文章主要介紹了Android實現(xiàn)手勢控制ImageView圖片大小的相關(guān)資料,需要的朋友可以參考下2016-02-02