1. 程式人生 > >Android 自定義seekbar

Android 自定義seekbar

在開發時經常會使用自定義的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"