前言
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);
效果圖: