天天看點

Android selector背景選擇器詳解

selector使用

selector主要用于點選按鈕或者一些控件時可以産生動态的點選效果,使使用者獲得更好的體驗。下面介紹一下它的使用方式:

1.首先在res下建立drawable目錄,然後在drawable目錄下建立btn_select.xml檔案:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 預設時的背景圖檔 
    <item android:drawable="@drawable/pic1"/>
    -->
    <!-- 沒有焦點時的背景圖檔 -->
    <item android:drawable="@drawable/startnormal" android:state_window_focused="false"/>
    <!-- 非觸摸模式下獲得焦點并單擊時的背景圖檔 
    <item android:drawable="@drawable/pic2" android:state_focused="true" android:state_pressed="true"/>
    -->
    <!-- 觸摸模式下單擊時的背景圖檔 -->
    <item android:drawable="@drawable/startpress" android:state_focused="false" android:state_pressed="true"/>

    <!-- 選中時的圖檔背景 
    <item android:drawable="@drawable/pic4" android:state_selected="true"/>
    -->
    <!-- 獲得焦點時的圖檔背景 
    <item android:drawable="@drawable/pic5" android:state_focused="true"/>
    -->
</selector>
           

2.如何使用已經建立的btn_select.xml?

注:在button按鈕中添加如上屬性就ok了!

3.此時我們已經實作了點選按鈕背景切換的效果,那麼如果點選按鈕切換字型顔色呢?

其實原理差不多,大同小異,首先在res/values目錄下建立color.xml檔案:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <drawable name="normal_color">#ff4500</drawable>  
    <drawable name="press_color">#434523</drawable>  
</resources>
           
然後在res/drawable目錄下建立btn_press_color.xml:
這裡寫代碼片<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="false" android:state_enabled="true" android:state_pressed="false"  
        android:color="@drawable/normal_color" />  
    <item android:state_pressed="true" android:color="@drawable/press_color" />  
</selector>
           
最後在控件中使用就可以了,顔色使用是textcolor屬性:
<Button 
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/btn_select"
        android:text="@string/btn_text"
        android:textColor="@drawable/btn_press_color"
        android:textSize="22sp"
        android:textStyle="bold"
        />
           

運作效果:

Android selector背景選擇器詳解