在开发时经常会使用自定义的seekbar,毕竟系统自带的很难看。每次都是从网上找一些方法,但是每次都会试好几个才会实现效果。现在记录下来,备用。
两个重要的属性:
android:progressDrawable:进度条的颜色
android:thumb:滑块的drawable
要修改的就是这两个属性。
首先在drawable文件夹下新建一个seekbar_define_style.xml,作为progressDrawable的背景。
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="10dip" />
<gradient
android:startColor="@color/seekbar_bg_color"
android:centerColor="@color/seekbar_bg_color"
android:endColor="@color/seekbar_bg_color"
/>
</shape>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="10dip" />
<gradient
android:startColor="@color/seekbar_proess_color"
android:centerColor="@color/seekbar_proess_color"
android:endColor="@color/seekbar_proess_color"
/>
</shape>
</clip>
</item>
</layer-list>
接下来写thumb的drawable,新建seekbar_thumb.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/seekbar_normal" />
<item
android:state_focused="false"
android:state_pressed="false"
android:drawable="@drawable/seekbar_normal" />
<item
android:state_focused="true"
android:state_pressed="false"
android:drawable="@drawable/seekbar_normal" />
<item
android:state_focused="true"
android:drawable="@drawable/seekbar_normal"/>
</selector>
这里我用的是同一个文件,有不同需要的可以自行修改。
最后一步:
在布局中添加seekbar控件属性
android:progressDrawable="@drawable/seekbar_define_style"
android:thumb="@drawable/seekbar_thumb"
Ok,运行,你的手机如果出现thumb有背景,与我们的资源图片不符,添加属性:android:splitTrack="false"