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 Nio使用NioSocket客户端与服务端交互实现方式
Jun 15 Java/Android
详解Java实践之适配器模式
Jun 18 Java/Android
详解java如何集成swagger组件
Jun 21 Java/Android
Java 泛型详解(超详细的java泛型方法解析)
Jul 02 Java/Android
SpringRetry重试框架的具体使用
Jul 25 Java/Android
SpringBoot2零基础到精通之数据与页面响应
Mar 22 Java/Android
springboot layui hutool Excel导入的实现
Mar 31 Java/Android
Spring Boot配合PageHelper优化大表查询数据分页
Apr 20 Java/Android
java版 简单三子棋游戏
May 04 Java/Android
利用正则表达式匹配浮点型数据
May 30 Java/Android
SpringBoot使用ip2region获取地理位置信息的方法
Jun 21 Java/Android
Spring Cloud OAuth2实现自定义token返回格式
Jun 25 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
PHP的FTP学习(一)[转自奥索]
2006/10/09 PHP
基于PHP+MySQL的聊天室设计
2006/10/09 PHP
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
2014/04/03 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
jquery延迟对象解析
2016/10/26 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
js对象简介与基本用法示例
2020/03/13 Javascript
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
让python 3支持mysqldb的解决方法
2017/02/14 Python
Python字符串处理实例详解
2017/05/18 Python
python 常用的基础函数
2018/07/10 Python
python中的print()输出
2019/04/12 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
广告学专业自荐信范文
2014/02/24 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
售票员岗位职责
2015/02/15 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
活动宣传稿范文
2015/07/23 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang