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

首頁 > 開發 > PHP > 正文

Android ProgressBar進度條和ProgressDialog進度框的展示DEMO

2024-05-04 23:10:05
字體:
來源:轉載
供稿:網友
在做手機開發時,經常碰到一些比較耗時的操作,這個時候進度條就開始派上用場了。
這個demo展示了ProgressBar進度條和ProgressDialog進度框。
一、ProgressDialog進度框,效果如圖所示:

Android ProgressBar進度條和ProgressDialog進度框的展示DEMO


代碼如下:

復制代碼 代碼如下:


//進度對話框按鈕監聽
class ProssButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
myDialog = ProgressDialog.show(ProgressbarDemo.this, "進度條標題",
"進度條內容", true);

new Thread() {
public void run() {
try {
/* 在這里寫上要背景運行的程序片段 */
/* 為了明顯看見效果,以暫停3秒作為示范 */
sleep(3000);
} catch (Exception e) {
e.printStackTrace();
} finally {
// 卸載所創建的myDialog對象。
myDialog.dismiss();
}
}
}.start(); /* 開始運行運行線程 */
}
}


二、進度條對話框,這里用兩種情況來動態顯示進度條刻度
1、handle方法
效果圖如下:

Android ProgressBar進度條和ProgressDialog進度框的展示DEMO


代碼如下:

復制代碼 代碼如下:


//進度條handle按鈕監聽
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 {
/* 在這里寫上運行的進度條 */
Message msg = new Message();
msg.what = 1;
msg.getData().putInt("size", i);
handler.sendMessage(msg);//handle發送消息
/* 為了明顯看見效果,以暫停1秒作為示范 */
sleep(100);
i+=10;
} catch (Exception e) {
handler.obtainMessage(-1).sendToTarget();
e.printStackTrace();
}
}
}
}.start(); /* 開始運行運行線程 */
}
}

//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效果一樣
具體代碼如下:

復制代碼 代碼如下:


//進度條synctask按鈕監聽
class ProssBarSyncButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
new AsyncLoader().execute((Void)null);
}
}


//AsyncTask 任務執行
class AsyncLoader extends AsyncTask<Void, Integer, Integer> {
@Override
//在doInBackground方法執行前執行
protected void onPreExecute(){
progressBarHandle.setVisibility(View.VISIBLE);
myProssBarhandleText.setVisibility(View.VISIBLE);
progressBarHandle.setMax(100000);
}

//做具體的耗時操作
protected Integer doInBackground(Void... params) {
//這里以1萬的進度條刻度來顯示
int totalSize = 100000;
for (int i = 0; i < 100000; ) {
publishProgress(i); //通過推送消息傳遞數據給onProgressUpdate方法執行
i+=10;
}
return totalSize;
}
//在doInBackground方法執行過程中執行
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方法結束后執行
protected void onPostExecute(Integer result) {
Toast.makeText(ProgressbarDemo.this, "下載成功,下載了"+result, 1).show();
myProssBarhandleText.setVisibility(View.GONE);
progressBarHandle.setVisibility(View.GONE);
}
}


點擊下載DEMO示例
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 菏泽市| 卓尼县| 团风县| 雷山县| 墨竹工卡县| 荔波县| 平舆县| 溧水县| 饶平县| 西昌市| 邢台市| 古田县| 宁河县| 防城港市| 寿阳县| 阿尔山市| 八宿县| 阆中市| 黄山市| 大宁县| 井研县| 岱山县| 广汉市| 名山县| 阿鲁科尔沁旗| 苍梧县| 扎囊县| 昂仁县| 民乐县| 涿鹿县| 大名县| 班玛县| 中宁县| 乐东| 隆子县| 仲巴县| 许昌市| 韩城市| 福清市| 深圳市| 长寿区|