Android开发手册自定义Switch开关按钮控件


Posted in Java/Android onJune 10, 2022

?自定义Switch外观

外观定制这块属于基操了,我们利用属性 android:track 和 android:thumb 定制 Switch 的背景图片和滑块图片,UI那能直接切图肯定做起来更快,此方式实现极其简单指定图片就行,所以今天我们实操的是自定义drawable的形式。

Android开发手册自定义Switch开关按钮控件

布局样式

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:thumb="@drawable/selector_switch_thumb"
    android:layout_margin="16dp"
    android:track="@drawable/selector_switch_track" />

Drawable代码

<?xml version="1.0" encoding="utf-8"?><!--switch的自定义轨道-->
<!--selector_switch_track.xml文件-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/track_on" android:state_checked="true" />
    <item android:drawable="@drawable/track_off" android:state_checked="false" />
</selector>
<?xml version="1.0" encoding="utf-8"?><!--switch的自定义圆钮-->
<!--selector_switch_thumb.xml文件-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/thumb_on" android:state_checked="true" />
    <item android:drawable="@drawable/thumb_off" android:state_checked="false" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<!--track_on.xml文件-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#BB00FF00" />
    <!-- 这个是用来实现轨道高度小于圆钮高度的,值越大轨道越细-->
    <!-- 同理,若thumb有stroke,track没有,可实现圆钮在轨道里的伪效果-->
    <stroke
        android:width="8dp"
        android:color="#00000000" />
    <corners android:radius="20dp" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<!--track_off.xml文件-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#E4E4E4" />
    <!-- 这个是用来实现轨道高度小于圆钮高度的,值越大轨道越细-->
    <stroke
        android:width="8dp"
        android:color="#00000000" />
    <corners android:radius="20dp" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<!--thumb_on.xml文件-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#FFFF00" />
    <size
        android:width="20dp"
        android:height="20dp" />
</shape>
<?xml version="1.0" encoding="utf-8"?>
<!--thumb_off.xml文件-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#AAAAAA" />
    <size
        android:width="20dp"
        android:height="20dp" />
</shape>

要想实现下图效果:

Android开发手册自定义Switch开关按钮控件

就是小空在代码中注释所述,在开关按钮上增加一个透明的边框,轨道的高度会自动变化。

除了Switch还有另一个开关ToggleButton,该控件无thumb和track,相比Switch缺少了滑动的动画效果。在使用上和Switch基本一致,同样可以自定义。

Android开发手册自定义Switch开关按钮控件

以上就是Android开发手册自定义Switch开关按钮控件的详细内容,更多关于Android开发自定义Switch控件的资料请关注三水点靠木其它相关文章!


Tags in this post...

Java/Android 相关文章推荐
Java并发编程之详解CyclicBarrier线程同步
Jun 23 Java/Android
浅谈resultMap的用法及关联结果集映射
Jun 30 Java/Android
java设计模式--建造者模式详解
Jul 21 Java/Android
Java移除无效括号的方法实现
Aug 07 Java/Android
使用springMVC所需要的pom配置
Sep 15 Java/Android
Spring-cloud Config Server的3种配置方式
Sep 25 Java/Android
Java9新特性对HTTP2协议支持与非阻塞HTTP API
Mar 16 Java/Android
Java 超详细讲解设计模式之中的抽象工厂模式
Mar 25 Java/Android
Java十分钟精通进阶适配器模式
Apr 06 Java/Android
Java存储没有重复元素的数组
Apr 29 Java/Android
SpringBoot详解执行过程
Jul 15 Java/Android
Mybatis 一级缓存和二级缓存原理区别
Sep 23 Java/Android
java实现面板之间切换功能
Jun 10 #Java/Android
Spring Boot项目如何优雅实现Excel导入与导出功能
Jun 10 #Java/Android
解决spring.thymeleaf.cache=false不起作用的问题
Jun 10 #Java/Android
Android开发手册Chip监听及ChipGroup监听
Jun 10 #Java/Android
Java实现带图形界面的聊天程序
Jun 10 #Java/Android
Android中View.post和Handler.post的关系
Android Canvas绘制文字横纵向对齐
Jun 05 #Java/Android
You might like
杏林同学录(八)
2006/10/09 PHP
php设计模式 Visitor 访问者模式
2011/06/28 PHP
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
克隆一个新项目的快捷方式
2013/04/10 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
2014/05/11 Javascript
jquery图片切换插件
2015/03/16 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
jquery不常用方法汇总
2015/07/26 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
vue.js实现双击放大预览功能
2020/06/23 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
python机器人运动范围问题的解答
2019/04/29 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
ORM Django 终端打印 SQL 语句实现解析
2019/08/09 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
AC Lens:购买隐形眼镜
2017/02/26 全球购物
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
什么是唯一索引
2015/07/05 面试题
写自荐信要注意什么
2013/12/26 职场文书
大学生创业计划书的用途
2014/01/08 职场文书
校本教研活动总结
2014/07/01 职场文书
尊师重教演讲稿
2014/09/04 职场文书
第二批党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
Python编程super应用场景及示例解析
2021/10/05 Python