Android開發自學筆記(Android Studio)—4.5 ProgressBar及其子類

1、前言

ProgressBar自己表明了進度條組件,它還派生出了兩個經常使用的組件:SeekBar和RatingBar,他們的使用方法相似,只是顯示界面有必定的區別。咱們看一下API文檔中的說明:html

image

從圖中咱們是能夠直接看到ProgressBar繼承自View類,直接子類有AbsSeekBar和ContentLoadingProgressBar,間接子類有RatingBar和SeekBar。下面依次介紹一下這幾個控件的使用方法。android

2、ProgressBar

ProgressBar是界面用於與用戶交互的一個組件,用來提高用戶友好度,一般用於向用戶展現某個耗時操做時,用於展現完成的百分比,不至於讓用戶以爲程序失去了響應。在API文檔中,咱們看到他所支持的XML屬性有以下:windows

xml屬性名稱 說明
android:animationResolution 動畫超時時間,必須是整數值,好比「100」
android:indeterminate 該屬性設置爲true,表示不精確顯示進度
android:indeterminateBehavior 設置當選擇不精確顯示進度時,如何描述到達最大值
android:indeterminateDrawable 設置當選擇不精確顯示進度時,所繪製的drawable對象
android:indeterminateDuration 設置不精確顯示進度的持續時間
android:indeterminateOnly 設置只採用不精確顯示進度模式(狀態保持模式將不會工做)
android:interpolator  
android:max 設置進度能夠達到的最大值
android:maxHeight 可選參數 設置View的最大高度
android:maxWidth 可選參數 設置View的最大寬度
android:minHeight 可選參數 設置View的最小高度
android:minWidth 可選參數 設置View的最小寬度
android:mirrorForRtl 定義若是是否須要反映在RTL模式的相關畫板,默認爲false
android:progress 設置該進度已完成的進度值
android:progressDrawable 設置該進度條軌道對應的drawable對象
android:secondaryProgress 二級進度條,主要用於緩存使用的場景

該表格取自API19文檔api

進度條支持多種風格,能夠直接經過設置style屬性來設置,API中也給出了以下的屬性:緩存

另一種使用方式就是可使用系統的ATT屬性例如:佈局

  • style="?android:attr/progressBarStyle" 
  • style="?android:attr/progressBarStyleHorizontal" 
  • style="?android:attr/progressBarStyleInverse" 
  • style="?android:attr/progressBarStyleLarge" 
  • style="?android:attr/progressBarStyleLargeInverse" 
  • style="?android:attr/progressBarStyleSmall" 
  • style="?android:attr/progressBarStyleSmallInverse" 
  • style="?android:attr/progressBarStyleSmallTitle" 

例如以下的代碼:學習

image

對於瘋狂講義3上的示例,我實際操做並無成功,自定義進度條雖然按照書上的示例操做, 可是顯示上兩個圖標重疊,並不能按照進度狀況顯示,代碼以下:動畫

image

而顯示效果倒是:spa

image而在實際運行效果也是後臺的模擬線程在更新UI上也是沒有按照預想的結果執行,一開始顯示的都是底部紅色圖片,一直不動,而後一下全更新成這種重疊圖片了。.net

imageimage找了半天緣由也不知道哪裏出了問題,這個問題暫時記錄一下,等抽空再解決。(API22的模擬器出現的顯示問題)

網上找了進度條的示例,感受也不是很完整,學起來不是很系統,想一想android自帶的sdk中有示例,就把它找出來了,咱們先看一下效果:

progressbar

示例的位置在&AndroidSDK&\samples\android-19\legacy\ApiDemos\src\com\example\android\apis\view 這個文件夾下,能夠看到

image這4個JAVA文件,就是對應的4個進度條代碼。

而對應的佈局文件能夠向上級res文件夾下去找。代碼這裏再也不附上了。本身去找DEMO吧,我認可這個,我學的有點鬱悶,標記一下。

7N]80L_$)E67F72AUPD(B68

3、SeekBar

SeekBar是滑動條,他與進度條的不一樣時通常進度條都是用顏色填充進度,而滑動條則是用滑塊表示進度數值,並且容許用戶經過拖動滑塊來改變數值,例如Windows的音量調節:

image就是一個滑動條。滑塊的樣式則是經過android:thumb屬性來指定。

下面作一個簡單的小例子,顯示結果就是在textView上顯示拖動滑塊改變的值。

簡單的效果:

seekbarseekbar

獲取拖動的值須要設置他的  setOnSeekBarChangeListener  這個監聽器,重寫他的方法。上方右邊的示例則是自定義了他的滑道,代碼在下面一塊給出。

首先給出滑道的樣式定義(progress_drawable.xml):

image

下面是示例主頁面的樣式佈局:

image

若是想模仿windows的調整音量的滑塊,只須要在內部的線性佈局的最前面再加個ImageView就能夠作出差很少的效果。

image

這是後臺代碼,主要是監聽器的實現。

這些只是SeekBar的基本用法,固然也能夠多種實現,以下是在網上看到的網友作的效果:

imageimage

 

示例連接:

1.自定義Seekbar

2.Android使用SeekBar時動態顯示進度且隨SeekBar一塊兒移動

3.能夠顯示浮動文字提示的ProgressBar或者SeekBar

4、RatingBar

星級評分條,其實也是一種拖動條,只是與拖動條的區別在於它提供星星來表示進度。常見的屬性以下:

屬性 說明
android:isIndicator 設置該星級評分是否容許用戶該表(true爲不容許改變)
android:numStars 設置該星級評分條總共有多少星星
android:rating 設置該星級評分條默認的星級
android:stepSize 設置每次最少須要改變多少個星級

咱們來作一個簡答的例子來演示這些屬性:

一樣先看一下效果:

ratingbar

而後咱們給出佈局文件:

image

其中max和progress是進度條中的屬性,由於RatingBar自己就是一個特殊的進度條,設置了最大值是100,5顆星顯示,說明一顆星是20,步進0.5,說明一次至少能夠選擇半顆星。

image

後臺主要是處理了改變時的監聽器。

 

5、後記

最近瑣事繁多,學習的進度減慢了,遇到問題也卡了好久,有些問題須要多深刻的學習一下,多看看SDK中的示例和API文檔。下面的章節會跳過一些簡單控件的使用,給出SDK中示例代碼的位置。再也不在博客上浪費空間了。加快學習進度。

相關文章
相關標籤/搜索