系统的Drawable(二)-Selector
Selector漫谈
Selector是定义 StateListDrawable
的标签,该Drawable代表着一个Drawable的集合,每一个Drawable都对应着View的一个状态,系统会根据View的状态来选择相应的Drawable,该Drawable常常会被用于做View的背景。通过 <Item>
标签来定义View对象的状态。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/white_color" android:state_pressed="true" />
<item android:drawable="@drawable/blue_color" android:state_pressed="false" />
</selector>
Android系统Drawable
Selector的属性
constantSize
表示StateListDrawable的固有大小是否会随着状态的改变而改变,状态的切换会导致切换到不同的Drawable,而不同的Drawable有不同的固有大小。此属性是一个布尔值,true表示StateListDrawable的固有大小保持不变,StateListDrawable的固有大小为Drawable集合的固有大小的最大值,false表示StateListDrawable的固有大小根据Drawable的不同而改变。默认为false。
dither
开启抖动效果,开启后可以让图片在低质量的屏幕上仍然有较好的显式效果,默认为true
variablePadding
StateListDrawable的padding属性是否会根据状态的改变而改变,true表示会根据状态的改变而改变,false表示不会跟随状态的改变而改变,此时StateListDrawable的padding的最大值,是Drawable集合的最大值。默认为false,不建议开启。
Item
代表View的状态和与状态相对应的Drawable。一个View主要以下的状态,每一个状态都是一个布尔值。
状态 | 描述 |
---|---|
android:state_activated | 表示View是否处于激活状态 |
android:state_active | 当一个View被视为是活动的 |
android:state_checkabl | 是否是可以被想选中的,用于ChekBox |
android:state_checked | CheckBox/RadioButton是否被选中 |
android:state_enabled | View 是否是可用状态 |
android:state_first | 当一个视图为有序列表的第一个元素的时候 |
android:state_focused | 当View获得焦点的时候 |
android:state_last | 当一个视图为有序列表的最后一个元素的时候 |
android:state_middle | 当View位于有序集合的中间位置时 |
android:state_pressed | View是否被按压 |
android:state_selected | View是否被选中 |
android:state_single | State value for StateListDrawable, set when a view or drawable is considered "single" by its host. |
android:state_window_focused | 当Window获得焦点时 |