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实现斗地主之洗牌发牌
Jun 14 Java/Android
java实现对Hadoop的操作
Jul 01 Java/Android
JavaWeb 入门:Hello Servlet
Jul 16 Java/Android
JavaWeb 入门篇(3)ServletContext 详解 具体应用
Jul 16 Java/Android
SpringBoot实现quartz定时任务可视化管理功能
Aug 30 Java/Android
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
Sep 25 Java/Android
深入解读Java三大集合之map list set的用法
Nov 11 Java/Android
解析探秘fescar分布式事务实现原理
Feb 28 Java/Android
Java基于Dijkstra算法实现校园导游程序
Mar 17 Java/Android
Java中Quartz高可用定时任务快速入门
Apr 03 Java/Android
Java Spring Boot 正确读取配置文件中的属性的值
Apr 20 Java/Android
Java版 单机五子棋
May 04 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无限分类的类
2007/01/02 PHP
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
PHP文件注释标记及规范小结
2012/04/01 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
js自带函数备忘 数组
2006/12/29 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
AngularJS模块学习之Anchor Scroll
2016/01/19 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
python多线程用法实例详解
2015/01/15 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
python万年历实现代码 含运行结果
2017/05/20 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
python文件操作之批量修改文件后缀名的方法
2018/08/10 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
python实现画循环圆
2019/11/23 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
全球在线商店:BerryLook
2019/04/14 全球购物
新年联欢会主持词
2014/03/27 职场文书
大学生自我评价200字(4篇)
2014/09/17 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android