Material design進度條:MaterialProgressBar

jopen 9年前發布 | 116K 次閱讀 Android開發 移動開發 MaterialProgressBar

Material design 進度條,在Android 4.0+以上都有一致的外觀。

運行效果:

Android 4.4.4

Material design進度條:MaterialProgressBar

Samsung Android 5.0.1 (native implementation fails to tint)

Material design進度條:MaterialProgressBar

Android 5.1.1

Material design進度條:MaterialProgressBar

Sample application APK

使用說明:

MaterialProgressBar其實并沒有定義進度條本身,而是把自定義的Drawable設置到ProgressBar上。

比如,在ProgressBar上設置HorizontalIndeterminateProgressDrawable:

progressBar.setIndeterminateDrawable(new HorizontalIndeterminateProgressDrawable(this));

為了讓你的ProgressBar在所有版本上都有正確的大小,你需要使用我們提供的style。其內部實現的技巧是用android:minHeight,android:maxHeight(and width)來控制Drawable的大小。

  • Widget.MaterialProgressBar.ProgressBar.Horizontal

  • Widget.MaterialProgressBar.ProgressBar

  • And more size and no-padding variants in styles.xml

比如,定義一個indeterminate horizontalProgressBar:

<ProgressBar
            android:id="@+id/indeterminate_horizontal_progress"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:indeterminate="true"
            style="@style/Widget.MaterialProgressBar.ProgressBar.Horizontal" />

別忘記創建和設置Drawable。

你還可以通過調用setShowTrack()和 setUseIntrinsicPadding()來自定義Drawable的表現。與著色有關的方法也是兼容了的setTint(),setTintList()和 setTintMode()這些方法都可以直接使用。

更多例子的細節,可以參考樣例項目中MainActivity的onCreate()方法 和 main_activity.xml 布局。


ProGuard

如果你使用了ProGuard,需要在ProGuard配置文件中添加如下的一行代碼,這樣ObjectAnimator才能正常工作。

-keep class me.zhanghai.android.materialprogressbar.** { *; }

項目主頁:http://www.baiduhome.net/lib/view/home/1434354750036

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!