Android 滑块开关 自定义Switch

自定义Switch开关:

复制代码
    <Switch
        android:id="@+id/switch_a"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:thumb="@drawable/ccb_switch_thumb"
        android:track="@drawable/ccb_switch_track"
        />
XML 复制代码
<!-- ccb_switch_thumb -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true">
        <selector>
            <item android:state_checked="true">
                <layer-list>
                    <item android:gravity="center_vertical" android:width="20dp" android:height="20dp"  android:drawable="@drawable/switch_on_normal_ov_on"/>
                </layer-list>
            </item>
            <item android:state_checked="false">
                <layer-list>
                    <item android:gravity="center_vertical" android:width="20dp" android:height="20dp" android:drawable="@drawable/switch_on_normal_ov_off" />
                </layer-list>
            </item>
        </selector>
    </item>
</selector>
XML 复制代码
<!-- ccb_switch_track -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/switch_on_normal_bg_on" android:state_checked="true" />
    <item android:drawable="@drawable/switch_on_normal_bg_off" android:state_checked="false" />
</selector>
XML 复制代码
<!--    switch_on_normal_ov_on-->
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <size
        android:width="22dp"
        android:height="22dp" />
    <stroke android:width="5dp" android:color="#00000000"/>
    <solid android:color="#ffffff"/>
</shape>
XML 复制代码
<!--    switch_on_normal_ov_off-->
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <size
        android:width="22dp"
        android:height="22dp" />
    <stroke android:width="5dp" android:color="#00000000"/>
    <solid android:color="#cc8C93A2"/>
</shape>
XML 复制代码
<!--    switch_on_normal_bg_on -->
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#2166ff" />
    <corners android:radius="22dp"/>
    <size
        android:width="45dp"
        android:height="22dp" />
</shape>
XML 复制代码
<!--    switch_on_normal_bg_off -->
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#50787880" />
    <corners android:radius="22dp"/>
    <size
        android:width="45dp"
        android:height="22dp" />
</shape>
java 复制代码
        cSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                Log.i(TAG, "onCheckedChanged 改变状态为: "+isChecked);

            }
        });
        btnSwitch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                cSwitch.setChecked(!isChecked);
            }
        });

笔记、仅供参考

相关推荐
三少爷的鞋5 小时前
AI 时代,我们都将成为通才型开发者:只懂 Android,已经不够了
android
Dovis(誓平步青云)9 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
晚风叙码11 小时前
MySQL 数据类型详解:从数值到字符串,一篇讲透
android·mysql·adb
传奇开心果编程11 小时前
【Compose Multiplatform 跨端开发学与练】第3课 布局与组件
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程14 小时前
【Compose Multiplatform 跨端开发学与练】第8课 资源管理与主题
android·windows·学习·ios·kotlin·web·composer
传奇开心果编程16 小时前
【Compose Multiplatform 跨端开发学与练】第9课 测试与调试
android·学习·macos·ios·kotlin·web·composer
传奇开心果编程16 小时前
【Compose Multiplatform 跨端开发学与练】第4课 导航与路由
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程16 小时前
【Compose Multiplatform 跨端开发学与练】第6课 状态管理与架构
android·学习·ui·ios·架构·kotlin·composer
事圆则缓16 小时前
Android AOSP 定制常见概念:源码目录、系统镜像与刷机流程
android
传奇开心果编程16 小时前
【Compose Multiplatform 跨端开发学与练】第2课 Compose 基础语法
android·windows·学习·ui·ios·kotlin·composer