ProgressBar自己表明了進度條組件,它還派生出了兩個經常使用的組件:SeekBar和RatingBar,他們的使用方法相似,只是顯示界面有必定的區別。咱們看一下API文檔中的說明:html
從圖中咱們是能夠直接看到ProgressBar繼承自View類,直接子類有AbsSeekBar和ContentLoadingProgressBar,間接子類有RatingBar和SeekBar。下面依次介紹一下這幾個控件的使用方法。android
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中也給出了以下的屬性:緩存
Widget.ProgressBar.Horizontal 水平進度條
Widget.ProgressBar.Small 小環形進度條
Widget.ProgressBar.Large 大環進度條
Widget.ProgressBar.Inverse 普通大小的環形進度條
Widget.ProgressBar.Small.Inverse 小環形進度條
Widget.ProgressBar.Large.Inverse 大環形進度條
另一種使用方式就是可使用系統的ATT屬性例如:
佈局
例如以下的代碼:學習
對於瘋狂講義3上的示例,我實際操做並無成功,自定義進度條雖然按照書上的示例操做, 可是顯示上兩個圖標重疊,並不能按照進度狀況顯示,代碼以下:動畫
而顯示效果倒是:spa
而在實際運行效果也是後臺的模擬線程在更新UI上也是沒有按照預想的結果執行,一開始顯示的都是底部紅色圖片,一直不動,而後一下全更新成這種重疊圖片了。.net
網上找了進度條的示例,感受也不是很完整,學起來不是很系統,想一想android自帶的sdk中有示例,就把它找出來了,咱們先看一下效果:
示例的位置在&AndroidSDK&\samples\android-19\legacy\ApiDemos\src\com\example\android\apis\view 這個文件夾下,能夠看到
而對應的佈局文件能夠向上級res文件夾下去找。代碼這裏再也不附上了。本身去找DEMO吧,我認可這個,我學的有點鬱悶,標記一下。
SeekBar是滑動條,他與進度條的不一樣時通常進度條都是用顏色填充進度,而滑動條則是用滑塊表示進度數值,並且容許用戶經過拖動滑塊來改變數值,例如Windows的音量調節:
就是一個滑動條。滑塊的樣式則是經過android:thumb屬性來指定。
下面作一個簡單的小例子,顯示結果就是在textView上顯示拖動滑塊改變的值。
簡單的效果:
獲取拖動的值須要設置他的 setOnSeekBarChangeListener 這個監聽器,重寫他的方法。上方右邊的示例則是自定義了他的滑道,代碼在下面一塊給出。
首先給出滑道的樣式定義(progress_drawable.xml):
下面是示例主頁面的樣式佈局:
若是想模仿windows的調整音量的滑塊,只須要在內部的線性佈局的最前面再加個ImageView就能夠作出差很少的效果。
這是後臺代碼,主要是監聽器的實現。
這些只是SeekBar的基本用法,固然也能夠多種實現,以下是在網上看到的網友作的效果:
示例連接:
星級評分條,其實也是一種拖動條,只是與拖動條的區別在於它提供星星來表示進度。常見的屬性以下:
屬性 | 說明 |
android:isIndicator | 設置該星級評分是否容許用戶該表(true爲不容許改變) |
android:numStars | 設置該星級評分條總共有多少星星 |
android:rating | 設置該星級評分條默認的星級 |
android:stepSize | 設置每次最少須要改變多少個星級 |
咱們來作一個簡答的例子來演示這些屬性:
一樣先看一下效果:
而後咱們給出佈局文件:
其中max和progress是進度條中的屬性,由於RatingBar自己就是一個特殊的進度條,設置了最大值是100,5顆星顯示,說明一顆星是20,步進0.5,說明一次至少能夠選擇半顆星。
後臺主要是處理了改變時的監聽器。
最近瑣事繁多,學習的進度減慢了,遇到問題也卡了好久,有些問題須要多深刻的學習一下,多看看SDK中的示例和API文檔。下面的章節會跳過一些簡單控件的使用,給出SDK中示例代碼的位置。再也不在博客上浪費空間了。加快學習進度。