最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android ProgressDialog進度條使用詳解

 更新時間:2016年02月13日 22:00:19   投稿:lijiao  
這篇文章主要對Android開發(fā)之ProgressDialog讀取文件進度進行解析,感興趣的朋友可以參考一下

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

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

1、Handler消息處理機制

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

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

2、文件字節(jié)流的操作

輸入輸出流的內(nèi)容,看來也不是想象中的那么難,在《Java面向?qū)ο蟪绦蛟O(shè)計》一書中分為:File類、文件字節(jié)流、文件字符流、緩沖流、文件對話框、隨機流、數(shù)組流、數(shù)據(jù)流帶進度條的輸入流、對象流,經(jīng)常會忘記它們對應(yīng)的類,使用起來容易混亂,下面分別寫一個簡單例子:

1)、File類

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

2)、文件字節(jié)流

private void readFromFile(String path) { 
    FileInputStream fis; 
    DataInputStream dis; 
    try { 
      fis = new FileInputStream(path); 
      dis = new DataInputStream(fis); 
      byte b[] = new byte[10];// 每次讀取10字節(jié) 
      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("系統(tǒng)提示");//進度條標題 
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("系統(tǒng)提示"); 
    mDialog.setIcon(R.drawable.ic_launcher); 
    mDialog.setMessage("正在讀取文件,請稍等。。。"); 
  } 

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。

相關(guān)文章

最新評論

阿鲁科尔沁旗| 巍山| 邓州市| 腾冲县| 桃园县| 新和县| 北海市| 汾阳市| 乐都县| 延川县| 河南省| 北碚区| 无极县| 四子王旗| 上林县| 那坡县| 金坛市| 福海县| 兴海县| 靖边县| 会宁县| 阿图什市| 吴川市| 敦化市| 莱西市| 永吉县| 车险| 吉木萨尔县| 武定县| 开远市| 屏东县| 普格县| 连平县| 金川县| 烟台市| 成武县| 游戏| 大埔县| 唐海县| 诸暨市| 遂昌县|