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>