利用ToggleButton可以实现一个简单的开关的效果,先上效果图:
因为动态图截取的时候,颜色好像有问题,就用这个颜色的啦。凑合着能看。
首先在布局中放一个ToggleButton和ImageView
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New ToggleButton"
android:id="@+id/toggleButton"
android:textOn=""
android:textOff=""
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="@drawable/tbtn_bg"
android:checked="false"/>
checked:默认的状态,false为关
textOn:状态为开的时候显示的文本,默认是on
textOff:状态为关的时候显示的文本,默认是off
新建一个selector用来显示不同状态的时候的背景:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/switch_on" android:state_checked="true"></item>
<item android:drawable="@mipmap/switch_off" android:state_checked="false"></item>
</selector>
这样,在ToggleButton状态为on和off的时候,分别显示不同的背景。也可以在代码中添加监听,做响应的操作:
tbtn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
iv.setBackgroundColor(isChecked ? Color.GREEN : Color.RED);
}
});
这里就是监听了状态的改变,然后改变ImageView的背景。这样一个简单的开关效果及监听就完成了。