亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android如何實現ProgressBar進度條和ProgressDialog進度框

發布時間:2021-10-13 09:21:40 來源:億速云 閱讀:179 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關Android如何實現ProgressBar進度條和ProgressDialog進度框的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

在做手機開發時,經常碰到一些比較耗時的操作,這個時候進度條就開始派上用場了。
這個demo展示了ProgressBar進度條和ProgressDialog進度框。
一、ProgressDialog進度框
代碼如下:


//進度對話框按鈕監聽
     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方法

代碼如下:


//進度條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);
         }
     }

感謝各位的閱讀!關于“Android如何實現ProgressBar進度條和ProgressDialog進度框”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

岐山县| 定襄县| 安阳县| 百色市| 巴楚县| 新和县| 道真| 西盟| 会东县| 古浪县| 滨海县| 万荣县| 舒城县| 巍山| 泰兴市| 平顶山市| 长顺县| 视频| 齐齐哈尔市| 大足县| 韶山市| 黄冈市| 乐山市| 汪清县| 天峻县| 阜城县| 清原| 阳信县| 洪江市| 石阡县| 海城市| 平定县| 宝鸡市| 南陵县| 寻乌县| 莱阳市| 洛南县| 崇阳县| 泗洪县| 宜兰县| 华蓥市|