Material design進度條:MaterialProgressBar
Material design 進度條,在Android 4.0+以上都有一致的外觀。
運行效果:
Android 4.4.4
Samsung Android 5.0.1 (native implementation fails to tint)
Android 5.1.1
使用說明:
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.** { *; }