1. implements Checkable 接口
接口 提供了 三个方法
void setChecked(boolean checked); 设置选中 boolean isChecked(); 是否选中 void toggle(); 开关
// android 选中状态的 标识
private static final int[] CHECKED_STATE_SET = { android.R.attr.state_checked };
@Override protected int[] onCreateDrawableState(int extraSpace) { final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); 增加1个状态 if (isChecked()) { mergeDrawableStates(drawableState, CHECKED_STATE_SET);//增加一个状态 } return drawableState; }@Override public void setChecked(boolean b) {if(this.isCheck != b){this.isCheck = b;refreshDrawableState(); //关键。根据状态 刷新drawable
}}// 必选要drawable 在xml 有选中状态的图片 才有效果@Override public boolean isChecked() { return isCheck; }@Override public void toggle() { setChecked(!isCheck); }