背景
項目中不可避免要利用網絡獲取服務器數據,或者是通過其他渠道獲取。有時候你需要等待一段時間才能將數據拿到。簡單來說從你發請求到服務器,再從服務器返回數據是需要一定時間的。那麼如果這段時間內,不提示用戶當前正在獲取數據,那麼用戶體驗會稍差,因爲他認爲是不是出問題了,爲什麼頁面沒有響應,頁面的顯示都是空白。所以這個時候來一個加載進度提示,就能有效的避免這一誤體驗。
參考學習使用
我找的是github上的一個開源項目,而且也是我比較喜歡的進度樣式,水平和圓形的加載進度都是一直變化的,不需要數值顯示。個人覺得喜歡這種樣式,比較簡潔乾淨,不帶數值也比較符合大衆。當然你要是喜歡帶數值的進度,也是可以做到的,這裏我就不細說了。
下面是github的項目地址,大家也可以自己去好好的學習分享。
爲什麼使用MaterialProgressBar?
- Android 4.0+的一致外觀
- Correct tinting across platforms
- 能夠刪除框架ProgressBar的padding
- 能夠隱藏框架水平進度條的進度背景
- 能夠顯示確定的循環過程
- Used as a drop-in replacement for framework ProgressBar
預覽
Android 4.4.4
三星Android 5.0.1(本機實現無法着色)
Android 6.0.1
集成
添加依賴,然後同步一下即可使用該開源庫
implementation 'me.zhanghai.android.materialprogressbar:library:1.4.2'
使用
您可以簡單地使用MaterialProgressBar小部件,也可以在常規的ProgressBar上從這個庫中設置drawables。
這裏我就只介紹小部件的用法,使用drawable的方法大家可以自行參考github上項目的使用手冊,這裏就不細說了。
使用widget
只需將ProgressBar替換爲MaterialProgressBar,並記住要應用相應的樣式和屬性來實現正確的行爲。
下面給出我項目中測試通過的兩種進度的寫法。
例如,水平進度條寫法爲:
<me.zhanghai.android.materialprogressbar.MaterialProgressBar
android:indeterminate="true"
app:mpb_progressStyle="horizontal"
style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
例如,圓形條寫法爲:
<me.zhanghai.android.materialprogressbar.MaterialProgressBar
android:indeterminate="true"
android:layout_gravity="center"
app:mpb_progressStyle="circular"
app:mpb_determinateCircularProgressStyle="dynamic"
style="@style/Widget.MaterialProgressBar.ProgressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
手機上效果圖示如下:
這裏可以看到,上面的是水平進度,下面的是圓形進度。這裏不是gif圖,所以看起來效果沒那麼炫,大家自己去試試看就能看到啦!真的還闊以哦!
可用的自定義屬性:
app:mpb_progressStyle
:可繪製的進度樣式:圓形或水平的。默認爲圓形app:mpb_setBothDrawables
:在這個進度條上是否應該設置確定的和不確定的drawables。默認爲false(用於性能)app:mpb_useIntrinsicPadding
:是否進度的繪製使用它內部的padding。默認值爲true。app:mpb_showProgressBackground
:進度繪製是否應該顯示進度背景。對水平進度的默認值爲true,否則爲false。
也支持與之相關的8個屬性,如app: mpb_progres進位和app:mpb_progressTintMode,這樣可以控制進度繪製的着色。默認的着色顏色是?colorControlActivated,默認的着色模式是src_in。
這裏就基本介紹了一些基本的屬性,大家最好自己去實現,畢竟影響的因素也有很多。更多的使用方法和介紹,大家可以通過上面的項目的github地址學習。
A little bit of progress every day!Come on!