Android 自定義seekbar
阿新 • • 發佈:2019-02-17
在開發時經常會使用自定義的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"