Material design进度条:MaterialProgressBar

jopen 9年前

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.open-open.com/lib/view/home/1434354750036