Android中加載進度條實戰簡述

背景

項目中不可避免要利用網絡獲取服務器數據,或者是通過其他渠道獲取。有時候你需要等待一段時間才能將數據拿到。簡單來說從你發請求到服務器,再從服務器返回數據是需要一定時間的。那麼如果這段時間內,不提示用戶當前正在獲取數據,那麼用戶體驗會稍差,因爲他認爲是不是出問題了,爲什麼頁面沒有響應,頁面的顯示都是空白。所以這個時候來一個加載進度提示,就能有效的避免這一誤體驗。


參考學習使用

我找的是github上的一個開源項目,而且也是我比較喜歡的進度樣式,水平和圓形的加載進度都是一直變化的,不需要數值顯示。個人覺得喜歡這種樣式,比較簡潔乾淨,不帶數值也比較符合大衆。當然你要是喜歡帶數值的進度,也是可以做到的,這裏我就不細說了。

下面是github的項目地址,大家也可以自己去好好的學習分享。

MaterialProgressBar


爲什麼使用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!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章