Android中載入進度條實戰簡述
背景
專案中不可避免要利用網路獲取伺服器資料,或者是通過其他渠道獲取。有時候你需要等待一段時間才能將資料拿到。簡單來說從你發請求到伺服器,再從伺服器返回資料是需要一定時間的。那麼如果這段時間內,不提示使用者當前正在獲取資料,那麼使用者體驗會稍差,因為他認為是不是出問題了,為什麼頁面沒有響應,頁面的顯示都是空白。所以這個時候來一個載入進度提示,就能有效的避免這一誤體驗。
參考學習使用
我找的是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!