Android ProgressBar進(jìn)度條和ProgressDialog進(jìn)度框的展示DEMO
更新時(shí)間:2013年06月19日 11:13:43 作者:
本篇文章是對Android中ProgressBar進(jìn)度條和ProgressDialog進(jìn)度框的展示DEMO進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
在做手機(jī)開發(fā)時(shí),經(jīng)常碰到一些比較耗時(shí)的操作,這個(gè)時(shí)候進(jìn)度條就開始派上用場了。
這個(gè)demo展示了ProgressBar進(jìn)度條和ProgressDialog進(jìn)度框。
一、ProgressDialog進(jìn)度框,效果如圖所示:

代碼如下:
//進(jìn)度對話框按鈕監(jiān)聽
class ProssButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
myDialog = ProgressDialog.show(ProgressbarDemo.this, "進(jìn)度條標(biāo)題",
"進(jìn)度條內(nèi)容", true);
new Thread() {
public void run() {
try {
/* 在這里寫上要背景運(yùn)行的程序片段 */
/* 為了明顯看見效果,以暫停3秒作為示范 */
sleep(3000);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 卸載所創(chuàng)建的myDialog對象。
myDialog.dismiss();
}
}
}.start(); /* 開始運(yùn)行運(yùn)行線程 */
}
}
二、進(jìn)度條對話框,這里用兩種情況來動(dòng)態(tài)顯示進(jìn)度條刻度
1、handle方法
效果圖如下:

代碼如下:
//進(jìn)度條handle按鈕監(jiān)聽
class ProssBarHandleButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
progressBarHandle.setVisibility(View.VISIBLE);
myProssBarhandleText.setVisibility(View.VISIBLE);
progressBarHandle.setMax(1000);
new Thread() {
public void run() {
for(int i=0;i<=1000;){
try {
/* 在這里寫上運(yùn)行的進(jìn)度條 */
Message msg = new Message();
msg.what = 1;
msg.getData().putInt("size", i);
handler.sendMessage(msg);//handle發(fā)送消息
/* 為了明顯看見效果,以暫停1秒作為示范 */
sleep(100);
i+=10;
} catch (Exception e) {
handler.obtainMessage(-1).sendToTarget();
e.printStackTrace();
}
}
}
}.start(); /* 開始運(yùn)行運(yùn)行線程 */
}
}
//handle接收消息
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
progressBarHandle.setProgress(msg.getData().getInt("size"));
float num = (float)progressBarHandle.getProgress()/(float)progressBarHandle.getMax();
int result = (int)(num*100);
System.out.println("progressBarHandle.getProgress()======="+progressBarHandle.getProgress());
myProssBarhandleText.setText(result+ "%");
if(progressBarHandle.getProgress()==progressBarHandle.getMax()){
Toast.makeText(ProgressbarDemo.this, "下載成功", 1).show();
progressBarHandle.setVisibility(View.GONE);
myProssBarhandleText.setVisibility(View.GONE);
}
break;
case -1:
Toast.makeText(ProgressbarDemo.this,"下載失敗", 1).show();
break;
}
}
};
2、使用AsyncTask方法,效果圖與handle效果一樣
具體代碼如下:
//進(jìn)度條synctask按鈕監(jiān)聽
class ProssBarSyncButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
new AsyncLoader().execute((Void)null);
}
}
//AsyncTask 任務(wù)執(zhí)行
class AsyncLoader extends AsyncTask<Void, Integer, Integer> {
@Override
// 在doInBackground方法執(zhí)行前執(zhí)行
protected void onPreExecute(){
progressBarHandle.setVisibility(View.VISIBLE);
myProssBarhandleText.setVisibility(View.VISIBLE);
progressBarHandle.setMax(100000);
}
// 做具體的耗時(shí)操作
protected Integer doInBackground(Void... params) {
//這里以1萬的進(jìn)度條刻度來顯示
int totalSize = 100000;
for (int i = 0; i < 100000; ) {
publishProgress(i); //通過推送消息傳遞數(shù)據(jù)給onProgressUpdate方法執(zhí)行
i+=10;
}
return totalSize;
}
// 在doInBackground方法執(zhí)行過程中執(zhí)行
protected void onProgressUpdate(Integer... progress) {
progressBarHandle.setProgress(progress[0]);
float num = (float)progressBarHandle.getProgress()/(float)progressBarHandle.getMax();
int result = (int)(num*100);
myProssBarhandleText.setText(result+ "%");
}
// 在doInBackground方法結(jié)束后執(zhí)行
protected void onPostExecute(Integer result) {
Toast.makeText(ProgressbarDemo.this, "下載成功,下載了"+result, 1).show();
myProssBarhandleText.setVisibility(View.GONE);
progressBarHandle.setVisibility(View.GONE);
}
}
點(diǎn)擊下載DEMO示例
這個(gè)demo展示了ProgressBar進(jìn)度條和ProgressDialog進(jìn)度框。
一、ProgressDialog進(jìn)度框,效果如圖所示:

代碼如下:
復(fù)制代碼 代碼如下:
//進(jìn)度對話框按鈕監(jiān)聽
class ProssButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
myDialog = ProgressDialog.show(ProgressbarDemo.this, "進(jìn)度條標(biāo)題",
"進(jìn)度條內(nèi)容", true);
new Thread() {
public void run() {
try {
/* 在這里寫上要背景運(yùn)行的程序片段 */
/* 為了明顯看見效果,以暫停3秒作為示范 */
sleep(3000);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 卸載所創(chuàng)建的myDialog對象。
myDialog.dismiss();
}
}
}.start(); /* 開始運(yùn)行運(yùn)行線程 */
}
}
二、進(jìn)度條對話框,這里用兩種情況來動(dòng)態(tài)顯示進(jìn)度條刻度
1、handle方法
效果圖如下:

代碼如下:
復(fù)制代碼 代碼如下:
//進(jìn)度條handle按鈕監(jiān)聽
class ProssBarHandleButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
progressBarHandle.setVisibility(View.VISIBLE);
myProssBarhandleText.setVisibility(View.VISIBLE);
progressBarHandle.setMax(1000);
new Thread() {
public void run() {
for(int i=0;i<=1000;){
try {
/* 在這里寫上運(yùn)行的進(jìn)度條 */
Message msg = new Message();
msg.what = 1;
msg.getData().putInt("size", i);
handler.sendMessage(msg);//handle發(fā)送消息
/* 為了明顯看見效果,以暫停1秒作為示范 */
sleep(100);
i+=10;
} catch (Exception e) {
handler.obtainMessage(-1).sendToTarget();
e.printStackTrace();
}
}
}
}.start(); /* 開始運(yùn)行運(yùn)行線程 */
}
}
//handle接收消息
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
progressBarHandle.setProgress(msg.getData().getInt("size"));
float num = (float)progressBarHandle.getProgress()/(float)progressBarHandle.getMax();
int result = (int)(num*100);
System.out.println("progressBarHandle.getProgress()======="+progressBarHandle.getProgress());
myProssBarhandleText.setText(result+ "%");
if(progressBarHandle.getProgress()==progressBarHandle.getMax()){
Toast.makeText(ProgressbarDemo.this, "下載成功", 1).show();
progressBarHandle.setVisibility(View.GONE);
myProssBarhandleText.setVisibility(View.GONE);
}
break;
case -1:
Toast.makeText(ProgressbarDemo.this,"下載失敗", 1).show();
break;
}
}
};
2、使用AsyncTask方法,效果圖與handle效果一樣
具體代碼如下:
復(fù)制代碼 代碼如下:
//進(jìn)度條synctask按鈕監(jiān)聽
class ProssBarSyncButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
new AsyncLoader().execute((Void)null);
}
}
//AsyncTask 任務(wù)執(zhí)行
class AsyncLoader extends AsyncTask<Void, Integer, Integer> {
@Override
// 在doInBackground方法執(zhí)行前執(zhí)行
protected void onPreExecute(){
progressBarHandle.setVisibility(View.VISIBLE);
myProssBarhandleText.setVisibility(View.VISIBLE);
progressBarHandle.setMax(100000);
}
// 做具體的耗時(shí)操作
protected Integer doInBackground(Void... params) {
//這里以1萬的進(jìn)度條刻度來顯示
int totalSize = 100000;
for (int i = 0; i < 100000; ) {
publishProgress(i); //通過推送消息傳遞數(shù)據(jù)給onProgressUpdate方法執(zhí)行
i+=10;
}
return totalSize;
}
// 在doInBackground方法執(zhí)行過程中執(zhí)行
protected void onProgressUpdate(Integer... progress) {
progressBarHandle.setProgress(progress[0]);
float num = (float)progressBarHandle.getProgress()/(float)progressBarHandle.getMax();
int result = (int)(num*100);
myProssBarhandleText.setText(result+ "%");
}
// 在doInBackground方法結(jié)束后執(zhí)行
protected void onPostExecute(Integer result) {
Toast.makeText(ProgressbarDemo.this, "下載成功,下載了"+result, 1).show();
myProssBarhandleText.setVisibility(View.GONE);
progressBarHandle.setVisibility(View.GONE);
}
}
點(diǎn)擊下載DEMO示例
您可能感興趣的文章:
- Android編程之ProgressBar圓形進(jìn)度條顏色設(shè)置方法
- android ListView和ProgressBar(進(jìn)度條控件)的使用方法
- Android實(shí)現(xiàn)進(jìn)度條(ProgressBar)的功能與用法
- Android三種方式實(shí)現(xiàn)ProgressBar自定義圓形進(jìn)度條
- Android ProgressBar進(jìn)度條使用詳解
- Android編程實(shí)現(xiàn)自定義ProgressBar樣式示例(背景色及一級、二級進(jìn)度條顏色)
- Android進(jìn)度條控件progressbar使用方法詳解
- Android ProgressBar直線進(jìn)度條的實(shí)例代碼
- Android progressbar實(shí)現(xiàn)帶底部指示器和文字的進(jìn)度條
- android實(shí)現(xiàn)簡單進(jìn)度條ProgressBar效果
相關(guān)文章
在WordPress中獲取數(shù)據(jù)庫字段內(nèi)容和添加主題設(shè)置菜單
這篇文章主要介紹了在WordPress中獲取數(shù)據(jù)庫字段內(nèi)容和添加主題設(shè)置菜單的方法,分別講解了get_option()函數(shù)和add_theme_page()函數(shù)的用法,需要的朋友可以參考下2016-01-01
php中l(wèi)trim()、rtrim()與trim()刪除字符空格實(shí)例
這篇文章主要介紹了php中l(wèi)trim()、rtrim()與trim()刪除字符空格的方法.以實(shí)例形式分別講述了ltrim()、rtrim()與trim()的具體用法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-11
php多進(jìn)程并發(fā)編程防止出現(xiàn)僵尸進(jìn)程的方法分析
這篇文章主要介紹了php多進(jìn)程并發(fā)編程防止出現(xiàn)僵尸進(jìn)程的方法,結(jié)合具體實(shí)例形式總結(jié)分析了php多進(jìn)程并發(fā)編程防止出現(xiàn)僵尸進(jìn)程相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2020-02-02
php批量添加數(shù)據(jù)與批量更新數(shù)據(jù)的實(shí)現(xiàn)方法
這篇文章主要介紹了php批量添加數(shù)據(jù)與批量更新數(shù)據(jù)的實(shí)現(xiàn)方法,涉及針對表單的處理與sql語句的靈活使用,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12
PHP實(shí)現(xiàn)將科學(xué)計(jì)數(shù)法轉(zhuǎn)換為原始數(shù)字字符串的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)將科學(xué)計(jì)數(shù)法轉(zhuǎn)換為原始數(shù)字字符串的方法,通過一個(gè)簡單的自定義函數(shù)使用正則替換實(shí)現(xiàn)該功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12

