Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android ProgressDialog進度條使用詳解

Android ProgressDialog進度條使用詳解

編輯:關於Android編程

進度條以一種客觀化的方式,讓我們知道程序正在執行的情況,在程序需要時間執行任務的時候,提示進度條友好的告訴用戶說,當前任務還沒有完成,請稍稍等待,進度條經常使用在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自定義樣式。

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

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved