色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

Android ProgressBar進(jìn)度條和ProgressDialog進(jìn)度框的展示DEMO

在做手機(jī)開(kāi)發(fā)時(shí),經(jīng)常碰到一些比較耗時(shí)的操作,這個(gè)時(shí)候進(jìn)度條就開(kāi)始派上用場(chǎng)了。
這個(gè)demo展示了ProgressBar進(jìn)度條和ProgressDialog進(jìn)度框。
一、ProgressDialog進(jìn)度框,效果如圖所示:

代碼如下:
復(fù)制代碼 代碼如下:
//進(jìn)度對(duì)話框按鈕監(jiān)聽(tīng)
     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 {
                         /* 在這里寫(xiě)上要背景運(yùn)行的程序片段 */
                         /* 為了明顯看見(jiàn)效果,以暫停3秒作為示范 */
                         sleep(3000);
                     } catch (Exception e) {
                         e.printStackTrace();
                     } finally {
                         // 卸載所創(chuàng)建的myDialog對(duì)象。
                         myDialog.dismiss();
                     }
                 }
             }.start(); /* 開(kāi)始運(yùn)行運(yùn)行線程 */
         }
     }

二、進(jìn)度條對(duì)話框,這里用兩種情況來(lái)動(dòng)態(tài)顯示進(jìn)度條刻度
1、handle方法
效果圖如下:

代碼如下:
復(fù)制代碼 代碼如下:
//進(jìn)度條handle按鈕監(jiān)聽(tīng)
     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 {
                         /* 在這里寫(xiě)上運(yùn)行的進(jìn)度條 */
                         Message msg = new Message();
                         msg.what = 1;
                         msg.getData().putInt("size", i);
                         handler.sendMessage(msg);//handle發(fā)送消息
                         /* 為了明顯看見(jiàn)效果,以暫停1秒作為示范 */
                         sleep(100);
                         i+=10;
                     } catch (Exception e) {
                         handler.obtainMessage(-1).sendToTarget();
                         e.printStackTrace();
                     } 
                 }
                 }
             }.start(); /* 開(kāi)始運(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)聽(tīng)
     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萬(wàn)的進(jìn)度條刻度來(lái)顯示
             int totalSize = 100000;
             for (int i = 0; i < 100000; ) {
                 publishProgress(i);  //通過(guò)推送消息傳遞數(shù)據(jù)給onProgressUpdate方法執(zhí)行
                 i+=10;
             }
             return totalSize;
         }
 //        在doInBackground方法執(zhí)行過(guò)程中執(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示例

php技術(shù)Android ProgressBar進(jìn)度條和ProgressDialog進(jìn)度框的展示DEMO,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 温州市| 北票市| 金川县| 西藏| 丹东市| 汤阴县| 锦州市| 葫芦岛市| 乌兰浩特市| 张家港市| 丹巴县| 日喀则市| 仪征市| 阳城县| 巴东县| 南乐县| 揭西县| 长丰县| 高碑店市| 惠来县| 河源市| 宁阳县| 甘孜县| 宁化县| 政和县| 达尔| 开封县| 呼和浩特市| 杭州市| 来宾市| 华池县| 绍兴县| 原阳县| 博白县| 紫云| 浙江省| 黑山县| 柳河县| 涿鹿县| 井陉县| 浏阳市|