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

Android ProgressDialog進(jìn)度條使用詳解

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

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

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

1、Handler消息處理機(jī)制

Handler消息處理機(jī)制,接收子線程傳遞過來的消息,根據(jù)消息傳遞值,執(zhí)行UI界面更新操作,目的防止阻塞主線程,使用最多的是sendEmptyMessage(int)、sendMessage(int),因?yàn)榻?jīng)常需要只要,所以記住第一個(gè)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è)置進(jìn)度條當(dāng)前值 
        if (progressValue == 100) {//判讀是否讀取結(jié)束 
           
          mDialog.dismiss(); 
          Toast.makeText(MainActivity.this, "讀取完成!", Toast.LENGTH_SHORT).show(); 
        } 
         
        break; 
 
      } 
    } 
 
  }; 

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

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

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);/進(jìn)度條樣式 
mDialog.setMax(100);//進(jìn)度條最大值 
mDialog.setTitle("系統(tǒng)提示");//進(jìn)度條標(biāo)題 
mDialog.setIcon(R.drawable.ic_launcher);//進(jìn)度條圖標(biāo) 
mDialog.setMessage("正在讀取文件,請(qǐng)稍等。。。");//進(jìn)度條提示信息 
 
mDialog.setProgress(progressValue);//進(jìn)度條當(dāng)前值 
mDialog.dismiss();//進(jìn)度條消失 

完整代碼:

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("正在讀取文件,請(qǐng)稍等。。。"); 
  } 

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

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

相關(guān)文章

最新評(píng)論

宜良县| 光泽县| 册亨县| 应城市| 柳河县| 固始县| 高唐县| 冷水江市| 丹江口市| 景东| 萨迦县| 阳曲县| 佳木斯市| 吉安市| 肇州县| 承德县| 安图县| 平罗县| 祥云县| 上饶县| 利津县| 清涧县| 中牟县| 宜都市| 舞阳县| 鄂尔多斯市| 永泰县| 东光县| 自治县| 巴楚县| 安丘市| 武平县| 葫芦岛市| 华坪县| 四子王旗| 喀什市| 金塔县| 方山县| 长兴县| 郓城县| 登封市|