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 相关文章推荐
Spring Bean的实例化之属性注入源码剖析过程
Jun 13 Java/Android
SpringBoot集成Redis,并自定义对象序列化操作
Jun 22 Java/Android
详解Spring事件发布与监听机制
Jun 30 Java/Android
Java后台生成图片的完整步骤
Aug 04 Java/Android
详解Spring Security中的HttpBasic登录验证模式
Mar 17 Java/Android
JAVA长虹键法之建造者Builder模式实现
Apr 10 Java/Android
Java 多态分析
Apr 26 Java/Android
Java中生成微信小程序太阳码的实现方案
Jun 01 Java/Android
Spring Boot项目如何优雅实现Excel导入与导出功能
Jun 10 Java/Android
Java实现简单小画板
Jun 10 Java/Android
Java异常体系非正常停止和分类
Jun 14 Java/Android
Spring Boot实现文件上传下载
Aug 14 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
第十节--抽象方法和抽象类
2006/11/16 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
JS编程小常识很有用
2012/11/26 Javascript
javascript与Python快速排序实例对比
2015/08/10 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
Python正则表达式使用范例分享
2016/12/04 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
python中MethodType方法介绍与使用示例
2017/08/03 Python
Python中一行和多行import模块问题
2018/04/01 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
英国女性时尚品牌:Apricot
2018/12/04 全球购物
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
伦敦鲜花递送:Flower Station
2021/02/03 全球购物
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
质检部岗位职责
2013/11/11 职场文书
普罗米修斯教学反思
2014/02/06 职场文书
《月迹》教学反思
2014/02/19 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
八一建军节主持词
2015/07/01 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery