前言
StateListDrawable是与xml中的selector属性对应代码实现类,它需要配合GradientDrawable的使用,如果你还不了解GradientDrawable可以参考我的另一篇博客:https://www.cnblogs.com/guanxinjing/p/11142599.html
配置对照表
android:state_pressed=["true" | "false"] 按下状态
android:state_focused=["true" | "false"] 聚焦状态
android:state_selected=["true" | "false"] 选中状态
android:state_active=["true" | "false"] 激活状态
android:state_checkable=["true" | "false"] 可校验状态
android:state_checked=["true" | "false"] 检查状态
android:state_enabled=["true" | "false"] 启用状态
android:state_window_focused=["true" | "false"] 状态栏聚焦状态
点击效果demo
GradientDrawable drawableRed = new GradientDrawable(); drawableRed.setShape(GradientDrawable.RECTANGLE); drawableRed.setColor(Color.RED); GradientDrawable drawableBlue = new GradientDrawable(); drawableBlue.setShape(GradientDrawable.RECTANGLE); drawableBlue.setColor(Color.BLUE); int pressed = android.R.attr.state_pressed; StateListDrawable stateListDrawable = new StateListDrawable(); stateListDrawable.addState(new int[]{pressed}, drawableRed); stateListDrawable.addState(new int[]{-pressed}, drawableBlue); btn1.setBackground(stateListDrawable);
效果图: