天天看點

Drawable selector詳解Noxml标簽Class類含義

No

xml标簽

Class類

含義

1

shape

ShapeDrawable

特定形狀,模型的圖樣

2

selector

StateListDrawable

不同狀态選擇不同的圖樣

3

layer-list

LayerDrawable

層疊圖樣

4

level-list

LevelListDrawable

不同程度圖樣

5

transition

TransitionDrawable

漸變圖樣

6

ripple

RippleDrawable

波紋圖樣

7

inset

InsetDrawable

内嵌圖樣

8

scale

ScaleDrawable

縮放圖樣

9

clip

ClipDrawable

剪切圖樣

10

rotate

RotateDrawable

旋轉圖樣

11

animation-list

AnimationDrawable

動畫效果

12

bitmap

BitmapDrawable

圖檔圖樣

13

nine-patch

NinePatchDrawable

.9圖

在Android中不論項目大小,都可以看到selector狀态選擇器的身影,一般使用在各種操作狀态下,主要展現在字型,背景的切換方面,我們可以動态的使用代碼去設定!也可以使用selector狀态選擇器去快速實作,因為它簡單友善,複用性強! 

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

    <!--
   //設定是否按壓狀态,一般在true時設定該屬性,表示已按壓狀态,預設為false

    android:state_pressed

    //設定是否選中狀态,true表示已選中,false表示未選中

    android:state_selected

    //設定是否勾選狀态,主要用于CheckBox和RadioButton,true表示已被勾選,false表示未被勾選

    android:state_checked

    //設定勾選是否可用狀态,類似state_enabled,隻是state_enabled會影響觸摸或點選事件,state_checkable影響勾選事件

    android:state_checkable

    //設定是否獲得焦點狀态,true表示獲得焦點,預設為false,表示未獲得焦點

    android:state_focused

    //設定觸摸或點選事件是否可用狀态,一般隻在false時設定該屬性,表示不可用狀态

    android:state_enabled

    較少用:
    //設定目前視窗是否獲得焦點狀态,true表示獲得焦點,false 表示未獲得焦點,例如拉下通知欄或彈出對話框時, 目前界面就會失去焦點;另外,ListView的ListItem獲得焦點時也會觸發true狀态,可以了解為目前視窗就是ListItem本身

    android:state_window_focused

    //設定是否被激活狀态,true表示被激活,false表示未激活,API Level 11及以上才支援,可通過代碼調用控件的

    android:state_activated

    //方法設定是否激活該控件
    setActivated(boolean)

    //設定是否滑鼠在上面滑動的狀态**,true表示滑鼠在上面滑動,預設為false,API Level 14及以上才支援
    //補充:selector标簽下有兩個比較有用的屬性要說一下,添加了下面兩個屬性之後,則會在狀态改變時出現淡入淡出效果,
    //但必須在API Level 11及以上才支援

    android:state_hovered

    //狀态改變時,舊狀态消失時的淡出時間,以毫秒為機關

    android:exitFadeDuration

    //狀态改變時,新狀态展示時的淡入時間,以毫秒為機關

    android:enterFadeDuration

-->

    <!--設定點選改變背景,再點選傳回背景-->
    <item android:state_activated="true"   android:drawable="@drawable/shape_rectangle"/>
    <item android:drawable="@drawable/shape_ring" android:state_activated="false"/>

    <!--點選改變背景-->
    <item android:state_pressed="true" android:drawable="@drawable/shape_rectangle" />
    <item android:drawable="@drawable/shape_ring" />

</selector>
           

繼續閱讀