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

首頁 > 系統 > Android > 正文

Android ProgressDialog進度條使用詳解

2020-04-11 10:50:00
字體:
來源:轉載
供稿:網友

進度條以一種客觀化的方式,讓我們知道程序正在執行的情況,在程序需要時間執行任務的時候,提示進度條友好的告訴用戶說,當前任務還沒有完成,請稍稍等待,進度條經常使用在APP下載應用、更新應用、加載網絡數據中,使用頻繁,常見的進度條有ProgressDialog、ProgressBar,這里只要介紹ProgressDialog。
ProgressDialog讀取文件進度解析主要涉及到一個知識:

  • Handler消息處理機制,
  • 文件字節流的操作,
  • ProgressDialog類的使用

1、Handler消息處理機制

Handler消息處理機制,接收子線程傳遞過來的消息,根據消息傳遞值,執行UI界面更新操作,目的防止阻塞主線程,使用最多的是sendEmptyMessage(int)、sendMessage(int),因為經常需要只要,所以記住第一個Handler代碼的寫法,后面沒次都可以復制過來用,如下:

Handler handler = new Handler() {      @Override     public void handleMessage(Message msg) {       switch (msg.what) {       case 110://根據what值,執行UI更新操作         progressValue += msg.arg1;         sb.append(msg.obj);         mTextView.setText(sb.toString());//TextView顯示讀取內容         mDialog.setProgress(progressValue);//設置進度條當前值         if (progressValue == 100) {//判讀是否讀取結束                      mDialog.dismiss();           Toast.makeText(MainActivity.this, "讀取完成!", Toast.LENGTH_SHORT).show();         }                  break;        }     }    }; 

2、文件字節流的操作

輸入輸出流的內容,看來也不是想象中的那么難,在《Java面向對象程序設計》一書中分為:File類、文件字節流、文件字符流、緩沖流、文件對話框、隨機流、數組流、數據流帶進度條的輸入流、對象流,經常會忘記它們對應的類,使用起來容易混亂,下面分別寫一個簡單例子:

1)、File類

File path = Environment.getExternalStorageDirectory();//獲取sdcard根路徑 File file = new File(path + "/ProgressMonitor.txt");//讀取根路徑下的ProgressMonitor文件 

2)、文件字節流

private void readFromFile(String path) {     FileInputStream fis;     DataInputStream dis;     try {       fis = new FileInputStream(path);       dis = new DataInputStream(fis);       byte b[] = new byte[10];// 每次讀取10字節       while ((readed = dis.read(b)) != -1) {         Message msg = new Message();         String str=new String(b,0,readed);         msg.obj=str;         msg.arg1 = readed;         msg.what = 110;         handler.sendMessage(msg);         try {           Thread.sleep(1000);         } catch (Exception e) {            e.printStackTrace();         }        }      } catch (FileNotFoundException e) {        e.printStackTrace();     } catch (IOException e) {       e.printStackTrace();     }finally {       try {         dis.close();         fis.close();       } catch (IOException e) {         // TODO Auto-generated catch block         e.printStackTrace();       }     }    } 

3、ProgressDialog的使用

ProgressDialog繼承AlertDialog,AlertDialog繼承Dialog,常用的屬性有:

mDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);/進度條樣式 mDialog.setMax(100);//進度條最大值 mDialog.setTitle("系統提示");//進度條標題 mDialog.setIcon(R.drawable.ic_launcher);//進度條圖標 mDialog.setMessage("正在讀取文件,請稍等。。。");//進度條提示信息  mDialog.setProgress(progressValue);//進度條當前值 mDialog.dismiss();//進度條消失 

完整代碼:

private static final int STYLE_HORIZONTAL = 110; private static final int STYLE_SPINNER = 111; private void progressDialogStyle(int id) {     switch (id) {     case STYLE_SPINNER:       mDialog = new ProgressDialog(this, ProgressDialog.STYLE_SPINNER);       break;     case STYLE_HORIZONTAL:       mDialog = new ProgressDialog(this);       mDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);       break;      default:       break;     }      mDialog.setMax(100);     mDialog.setTitle("系統提示");     mDialog.setIcon(R.drawable.ic_launcher);     mDialog.setMessage("正在讀取文件,請稍等。。。");   } 

ProgressDialog類可以制作平時常見的進度條效果,如果需要更多進度條式樣,可以重寫ProgressDialog提供的方法或者繼承AlertDialog自定義樣式。

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长垣县| 临邑县| 香格里拉县| 酒泉市| 大渡口区| 湟源县| 武陟县| 凉山| 思茅市| 交口县| 乌兰察布市| 翁牛特旗| 上饶市| 宜兰县| 扎兰屯市| 白城市| 洪洞县| 潍坊市| 洛阳市| 新邵县| 怀化市| 福建省| 时尚| 屏山县| 富蕴县| 平度市| 乌苏市| 孟州市| 孝昌县| 商河县| 望江县| 重庆市| 南昌市| 郑州市| 阳朔县| 无极县| 黔西县| 临安市| 临武县| 德保县| 华容县|