Drawable和stateSet的关系
state实际上就是一个整型数组,你可以追加各种state,比如state_press、state_press。
用xml生成Drawable
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/on_switch" />
<item android:drawable="@drawable/off_switch" />
</selector>
以上代码可以生成一个根据状态改变的Drawable,如果当前state为checked的话,则真实的Drawable为on_switch,否则为off_switch。
怎么刷新Drawable的state
Drawable.java里有一个方法,可以用来设置state:
public boolean setState(@NonNull final int[] stateSet) {
if (!Arrays.equals(mStateSet, stateSet)) {
mStateSet = stateSet;
return onStateChange(stateSet);
}
return false;
}