1. 程式人生 > >Android入門教程二十九之ProgressBar(進度條)

Android入門教程二十九之ProgressBar(進度條)

本節引言:

本節給大家帶來的是Android基本UI控制元件中的ProgressBar(進度條),ProgressBar的應用場景很多,比如 使用者登入時,後臺在發請求,以及等待伺服器返回資訊,這個時候會用到進度條;或者當在進行一些比較 耗時的操作,需要等待一段較長的時間,這個時候如果沒有提示,使用者可能會以為程式Carsh或者手機宕機 了,這樣會大大降低使用者體驗,所以在需要進行耗時操作的地方,新增上進度條,讓使用者知道當前的程式 在執行中,也可以直觀的告訴使用者當前任務的執行進度等!使用進度條可以給我帶來這樣的便利! 好了,開始講解本節內容~ 對了,ProgressBar官方API文件:

ProgressBar

1.常用屬性講解與基礎例項

從官方文件,我們看到了這樣一個類關係圖:

ProgressBar繼承與View類,直接子類有AbsSeekBar和ContentLoadingProgressBar, 其中AbsSeekBar的子類有SeekBar和RatingBar,可見這二者也是基於ProgressBar實現的

常用屬性詳解:

  • android:max:進度條的最大值
  • android:progress:進度條已完成進度值
  • android:progressDrawable:設定軌道對應的Drawable物件
  • android:indeterminate:如果設定成true,則進度條不精確顯示進度
  • android:indeterminateDrawable:設定不顯示進度的進度條的Drawable物件
  • android:indeterminateDuration:設定不精確顯示進度的持續時間
  • android:secondaryProgress:二級進度條,類似於視訊播放的一條是當前播放進度,一條是緩衝進度,前者通過progress屬性進行設定!

對應的再Java中我們可呼叫下述方法:

  • getMax():返回這個進度條的範圍的上限
  • getProgress():返回進度
  • getSecondaryProgress():返回次要進度
  • incrementProgressBy(int diff):指定增加的進度
  • isIndeterminate():指示進度條是否在不確定模式下
  • setIndeterminate(boolean indeterminate):設定不確定模式下

接下來來看看系統提供的預設的進度條的例子吧!

系統預設進度條使用例項:

執行效果圖:

實現佈局程式碼:

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><!-- 系統提供的圓形進度條,依次是大中小 --><ProgressBarstyle="@android:style/Widget.ProgressBar.Small"android:layout_width="wrap_content"android:layout_height="wrap_content"/><ProgressBarandroid:layout_width="wrap_content"android:layout_height="wrap_content"/><ProgressBarstyle="@android:style/Widget.ProgressBar.Large"android:layout_width="wrap_content"android:layout_height="wrap_content"/><!--系統提供的水平進度條--><ProgressBarstyle="@android:style/Widget.ProgressBar.Horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:max="100"android:progress="18"/><ProgressBarstyle="@android:style/Widget.ProgressBar.Horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:indeterminate="true"/></LinearLayout>

好吧,除了第二個能看,其他的就算了…系統提供的肯定是滿足不了我們的需求的! 下面我們就來講解下實際開發中我們對進度條的處理!

2.使用動畫來替代圓形進度條

第一個方案是,使用一套連續圖片,形成一個幀動畫,當需要進度圖的時候,讓動畫可見,不需要 的時候讓動畫不可見即可!而這個動畫,一般是使用AnimationDrawable來實現的!好的,我們來 定義一個AnimationDrawable檔案:

執行效果圖: