Android中selector背景選擇器


http://blog.csdn.net/forsta/article/details/26148403

http://blog.csdn.net/wswqiang/article/details/6616306

http://blog.csdn.net/shakespeare001/article/details/7788400

在Android開發過程中,經常對某一View的背景在不同的狀態下,設置不同的背景,增強用戶體驗。如果按鈕,在按下時,背景變化,如果在代碼中動態設置,相對比較麻煩。Android為我們提供了selector背景選擇器可以非常方便的解決這一問題。

一,Selector的結構描述:

1.android:state_pressed="true/false"

true:表示按下狀態下使用,false:表示非按下狀態下使用。

2.android:state_focused="true/false"

ture:表示聚焦狀態使用(例如使用滾動球/D-pad聚焦Button),false:表示非聚集狀態下使用。

3.android:state_selected="true/false"

true:表示被選中狀態下使用,false:表示非選中下使用

4.android:state_active="true/false"

true:表示可勾選狀態時使用,false:表示不可勾選狀態下使用

5. android:state_checkable="true/false"

true:表示勾選狀態下使用,false:表示非勾選狀態使用

6.android:state_checked="true/false"

true:表示勾選狀態下使用,false:表示非勾選狀態使用

7. android:state_enabled="true/false"

true:表示可用狀態使用(能接收觸摸/點擊事件),false:表示不可用狀態使用

8. android:state_window_focused="true/false"

true:表示應用程序窗口有焦點時使用(應用程序在前台),false:表示無焦點時使用
9.android:drawable

設置背景圖片

二,編寫格式

<?xml version="1.0" encoding="utf-8" ?>   
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- 默認時的背景圖片-->  
  <item android:drawable="@drawable/pic1" />    
<!-- 沒有焦點時的背景圖片 -->  
  <item android:state_window_focused="false"   
        android:drawable="@drawable/pic1" />   
<!-- 非觸摸模式下獲得焦點並單擊時的背景圖片 -->  
  <item android:state_focused="true" android:state_pressed="true"   android:drawable= "@drawable/pic2" /> 
<!-- 觸摸模式下單擊時的背景圖片-->  
<item android:state_focused="false" android:state_pressed="true"   android:drawable="@drawable/pic3" />  
<!--選中時的圖片背景-->  
  <item android:state_selected="true"   android:drawable="@drawable/pic4" />   
<!--獲得焦點時的圖片背景-->  
  <item android:state_focused="true"   android:drawable="@drawable/pic5" />   
</selector>

 

三,使用細則

Item順序是有講究的,條件限定越細致,則應該放到前面。比如如下代碼,如果把1,2行和3,4行的item交換,那么pressed的就永遠無法觸發了,因為有item已經滿足條件返回了。可以理解為代碼中的if語句。

 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true" android:state_checked="true" android:state_pressed="true"
          android:drawable="@drawable/enabled_on_pressed" />
    <item android:state_enabled="true" android:state_checked="false" android:state_pressed="true"
          android:drawable="@drawable/enabled_off_pressed" />
    <item android:state_enabled="true" android:state_checked="true"
          android:drawable="@drawable/enabled_on" />
    <item android:state_enabled="true"  android:state_checked="false"
          android:drawable="@drawable/enabled_off" />
    <item android:state_enabled="false" android:state_checked="true"
          android:drawable="@drawable/disabled_on" />
    <item android:state_enabled="false"  android:state_checked="false"
          android:drawable="@drawable/disabled_off" />              
</selector>

 

 

 

四,使用方法

三種方法可以來引用創建的文件:

(1)在ListView中添加如下屬性代碼

  1. android:listSelector="@drawable/mylist_view"  


(2)在ListView的item界面中添加如下屬性代碼

 

  1. android:background="@drawable/mylist_view"  


(3)利用JAVA代碼直接編寫

    1. Drawable drawable = getResources().getDrawable(R.drawable.mylist_view);   
    2. listView.setSelector(drawable); 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM