1. 程式人生 > >Android中載入進度條實戰簡述

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!