Android開發(fā)之ProgressDialog進(jìn)度對(duì)話框用法示例
本文實(shí)例講述了Android開發(fā)之ProgressDialog進(jìn)度對(duì)話框用法。分享給大家供大家參考,具體如下:
使用方法:
| 如果只是普通進(jìn)度對(duì)話框 | 直接調(diào)用ProgressDialog靜態(tài)方法 show() 即可 |
| 創(chuàng)建ProgressDialog | 調(diào)用方法進(jìn)行具體設(shè)置 |
setIndeterminate(false); |
設(shè)置進(jìn)度條是否顯示進(jìn)度 |
setMax(MAX_PROGRESS); |
設(shè)置進(jìn)度條的最大值 |
setMessage("..."); |
設(shè)置對(duì)話框執(zhí)行內(nèi)容 |
setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) |
設(shè)置對(duì)話框進(jìn)度條風(fēng)格 |
setProgress() |
設(shè)置 進(jìn)度條內(nèi)的進(jìn)度值(當(dāng)前) |
效果:

代碼實(shí)現(xiàn):
主要是兩種類型
1.帶耗時(shí)操作 showIndeterminate
2.不帶耗時(shí)操作 showProgress
具體實(shí)現(xiàn):
public class MainActivity extends Activity {
final static int MAX_PROGRESS = 100;
//虛擬 填充長(zhǎng)度為100的數(shù)組
private int[] data = new int[50];
//記錄進(jìn)度對(duì)話框完成百分比
int progressStatus = 0;
int hasDta = 0;
ProgressDialog progressDialog01,progressDialog02;
private Button buttonDate;
private Button buttonTime;
//創(chuàng)建一個(gè)負(fù)責(zé)更新進(jìn)度的Handler
Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
//表明消息是本程序發(fā)送的
if (msg.what == 0x111){
progressDialog02.setProgress(progressStatus);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonDate = (Button) findViewById(R.id.dataBn);
buttonTime = (Button) findViewById(R.id.timeBn);
iniClick();//Binding the listeners for you program
}
public void showSpinner(View source){
//用靜態(tài)方法顯示環(huán)形進(jìn)度條
ProgressDialog.show(this,"任務(wù)執(zhí)行中","熱內(nèi)執(zhí)行中 請(qǐng)等待...",false,true);
}
public void showIndeterminate(View source){
progressDialog01 = new ProgressDialog(MainActivity.this);
//設(shè)置對(duì)話框標(biāo)題
progressDialog01.setTitle("任務(wù)正在執(zhí)行中");
//設(shè)置對(duì)話框執(zhí)行內(nèi)容
progressDialog01.setMessage("任務(wù)正在執(zhí)行中敬請(qǐng)等待~~~");
//設(shè)置對(duì)話框“取消” 按鈕關(guān)閉
progressDialog01.setCancelable(true);
//設(shè)置對(duì)話框進(jìn)度條風(fēng)格
progressDialog01.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//設(shè)置進(jìn)度條是否顯示進(jìn)度
progressDialog01.setIndeterminate(true);
progressDialog01.show();
}
public void showProgress(View source){
//將進(jìn)度條完成重設(shè)為0
progressStatus = 0;
//重新開始填充數(shù)組
hasDta = 0;
progressDialog02 = new ProgressDialog(MainActivity.this);
progressDialog02.setMax(MAX_PROGRESS);
//設(shè)置對(duì)話框標(biāo)題
progressDialog02.setTitle("任務(wù)正在執(zhí)行中");
//設(shè)置對(duì)話框執(zhí)行內(nèi)容
progressDialog02.setMessage("任務(wù)正在執(zhí)行中敬請(qǐng)等待~~~");
//設(shè)置對(duì)話框“取消” 按鈕關(guān)閉
progressDialog02.setCancelable(false);
//設(shè)置對(duì)話框進(jìn)度條風(fēng)格
progressDialog02.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//設(shè)置進(jìn)度條是否顯示進(jìn)度
progressDialog02.setIndeterminate(false);
progressDialog02.show();
new Thread(){//模擬耗時(shí)操作
@Override
public void run() {
while (progressStatus < MAX_PROGRESS){
//bar1獲取完成工作的百分比
progressStatus += (int) (Math.random()*15);
try{
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
//更新ProgressBar
mHandler.sendEmptyMessage(0x111);
}
//任務(wù)完成進(jìn)度條關(guān)閉
progressDialog02.dismiss();
}
}.start();
}
public void iniClick(){
//set listener for your Date button
buttonDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showIndeterminate(MainActivity.this.getWindow().getDecorView());
}
});
//set listener for your Time button
buttonTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showProgress(MainActivity.this.getWindow().getDecorView());
}
});
}
}
以下是布局文件:
<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/idtatabHost"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1">
<Button
android:id="@+id/dataBn"
android:text="一般進(jìn)度條"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<Button
android:id="@+id/timeBn"
android:text="帶耗時(shí)進(jìn)度條"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
</LinearLayout>
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進(jìn)階教程》、《Android調(diào)試技巧與常見問(wèn)題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
- 實(shí)例詳解Android自定義ProgressDialog進(jìn)度條對(duì)話框的實(shí)現(xiàn)
- Android自定義ProgressDialog進(jìn)度等待框
- Android ProgressBar進(jìn)度條和ProgressDialog進(jìn)度框的展示DEMO
- Android 自定義ProgressDialog進(jìn)度條對(duì)話框用法詳解
- Android 中通過(guò)實(shí)現(xiàn)線程更新Progressdialog (對(duì)話進(jìn)度條)
- Android ProgressDialog進(jìn)度條使用詳解
- Android編程實(shí)現(xiàn)加載等待ProgressDialog的方法
- android自定義ProgressDialog加載效果
- Android自定義ProgressDialog加載圖片
- Android ProgressDialog使用總結(jié)
相關(guān)文章
Android 反射注解與動(dòng)態(tài)代理綜合使用詳解
本篇文章主要介紹了Android 反射注解與動(dòng)態(tài)代理綜合使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Android中APK簽名工具之jarsigner和apksigner詳解
這篇文章主要給大家介紹了關(guān)于Android中APK簽名工具之jarsigner和apksigner的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06
Android 斷點(diǎn)續(xù)傳原理以及實(shí)現(xiàn)
這篇文章主要介紹了Android 斷點(diǎn)續(xù)傳原理以及實(shí)現(xiàn)的相關(guān)資料,這里對(duì)斷點(diǎn)續(xù)傳原理進(jìn)行了詳細(xì)介紹,需要的朋友可以參考下2016-12-12
Android Canvas方法總結(jié)最全面詳解API(小結(jié))
本篇文章主要介紹了Android Canvas方法總結(jié)最全面詳解API(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Android Retrofit實(shí)現(xiàn)多圖片/文件、圖文上傳功能
Retrofit是Square開發(fā)的一個(gè)Android和Java的REST客戶端庫(kù)。這個(gè)庫(kù)非常簡(jiǎn)單并且具有很多特性,相比其他的網(wǎng)絡(luò)庫(kù),更容易讓初學(xué)者快速掌握2017-03-03
Android ImageView Src 和Background 區(qū)別
這篇文章主要介紹了Android ImageView Src 和Background 區(qū)別的相關(guān)資料,需要的朋友可以參考下2016-09-09
Android實(shí)現(xiàn)新浪微博一鍵分享的實(shí)例代碼
這篇文章主要介紹了Android實(shí)現(xiàn)新浪微博一鍵分享的實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07

