关于Android中自定义水平的ProgressBar
通过Progressbar的样式寻找到Android系统中定义ProgressBar的属性文件中的样式定义
<style name="Widget.ProgressBar.Horizontal">
<item name="indeterminateOnly">false</item>
<item name="progressDrawable">@drawable/progress_horizontal</item>
<item name="indeterminateDrawable">@drawable/progress_indeterminate_horizontal</item>
<item name="minHeight">20dip</item>
<item name="maxHeight">20dip</item>
<item name="mirrorForRtl">true</item>
</style>
这段代码中的ProgressDrawable就是关键,下面我们点击进去查看其中到底定义了什么
看到这里我相信大家都明白了,我们只需要在项目中新建一个drawable文件在其中定义我们想要的样式即可。layer_list大家就想象成Fram布局,就相当于一个一个颜色叠加上。
下面是一个简单的实例
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- id : 不能修改,因为android系统内部是通过id寻找图层 -->
<!-- 总的进度 -->
<item android:id="@android:id/background">
<shape>
<solid android:color="#550000FF" />
</shape>
</item>
<!-- 缓冲的进度 -->
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<solid android:color="#00FF00" />
</shape>
</clip>
</item>
<!-- 当前的进度 -->
<item android:id="@android:id/progress">
<clip>
<shape>
<solid android:color="#FF0000" />
</shape>
</clip>
</item>
</layer-list>
<ProgressBar
android:id="@+id/home_progress"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="60dp"
android:progressDrawable="@drawable/customprogress" />
自定义水平的进度条通过progressDrawable来修改,而圆形的progressBar通过indeterminateDrawable来修改。
实际上indeterminateDrawable,是一个很特殊的属性,他的通常所引用的文件都是一个动画文件,例如一个圆形的ProgressBar那么如果你想自定义一个图片在选择,那么就需要使用到这个属性