用ImageView和Selector来实现:
Java文件:
public class CustomSwitch extends AppCompatImageView{
public CustomSwitch(Context context) {
this(context,null);
}
public CustomSwitch(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public CustomSwitch(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setBackground(ContextCompat.getDrawable(getContext(),R.drawable.custom_switch_selector));
}
}
xml文件:custom_switch_selector:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/switch_open" android:state_selected="true" android:state_enabled="true"/>
<item android:drawable="@drawable/switch_open_disable" android:state_selected="true" android:state_enabled="false"/>
<item android:drawable="@drawable/switch_off" android:state_selected="false" android:state_enabled="true" />
<item android:drawable="@drawable/switch_off_disable" android:state_selected="false" android:state_enabled="false" />
</selector>
4个Drawable 图片分别是
然后在做这个自定义开关的点击事件中使用
setSelected(boolean)//设置选中状态
setEnabled(boolean)//设置是否可用状态