在coding的过程中需要用到简单的switch-button,因为Android自带库没有此组件,使用就打算自定义view实现一个开关按钮。
我使用了view的组合,首先思考开关按钮的组成,分为2个部分,一个是底部的圆角矩形,一部分是在开关过程中变换位置的圆。
于是写出按钮的xml布局
layout_switch.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relative_layout_bg"
android:layout_width="64dp"
android:layout_height="32dp"
android:background="@drawable/bg_switch_bottom_open">
<View
android:id="@+id/view_scroll"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="@drawable/bg_switch_top_open"/>
</RelativeLayout>
分别为2部分写背景的资源文件
底部部分在开关2种状态下的布局文件分别为bg_switch_botttom_open.xml和bg_switch_bottom.xml文件
2个布局文件的代码分别如下所示:
bg.switch_bottom_open.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="1dp"
android:color="@android:color/holo_red_dark" />
<corners android:radius="32dp" />
<solid android:color="@android:color/holo_red_light" />
</shape>
bg_bottom_bottom.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="1dp"
android:color="@android:color/darker_gray" />
<corners android:radius="32dp" />
<solid android:color="@android:color/darker_gray" />
</shape>
同理,上方的圆圈的背景资源文件也分为bg_switch_top_open.xml和bg_switch_top.xml2个
具体代码如下:
bg_switch_top_open.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke
android:width="1dp"
android:color="@android:color/holo_red_dark" />
<corners android:radius="8dp" />
<size
android:width="30dp"
android:height="30dp" />
<solid android:color="@android:color/white"/>
</shape>
bg_switch_top.xml代码: