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 相关文章推荐
Springboot如何使用logback实现多环境配置?
Jun 16 Java/Android
IDEA使用SpringAssistant插件创建SpringCloud项目
Jun 23 Java/Android
Springboot使用Spring Data JPA实现数据库操作
Jun 30 Java/Android
mybatis3中@SelectProvider传递参数方式
Aug 04 Java/Android
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
Aug 30 Java/Android
java中用float时,数字后面加f,这样是为什么你知道吗
Sep 04 Java/Android
JavaCV实现照片马赛克效果
Jan 22 Java/Android
SpringBoot+Redis实现布隆过滤器的示例代码
Mar 17 Java/Android
SpringBoot2零基础到精通之异常处理与web原生组件注入
Mar 22 Java/Android
JAVA长虹键法之建造者Builder模式实现
Apr 10 Java/Android
Java设计模式中的命令模式
Apr 28 Java/Android
Java Redisson多策略注解限流
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
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
php格式化时间戳
2016/12/17 PHP
PHP设计模式之原型设计模式原理与用法分析
2018/04/25 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
2014/04/12 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
2015/08/11 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
vue自定义组件实现双向绑定
2021/01/13 Vue.js
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
利用Python抓取行政区划码的方法
2016/11/28 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
Pytorch中膨胀卷积的用法详解
2020/01/07 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
python使用Thread的setDaemon启动后台线程教程
2020/04/25 Python
Django配置跨域并开发测试接口
2020/11/04 Python
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
英国高街奥特莱斯:Highstreet Outlet
2019/11/21 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
物流专业大学生求职信范文
2013/10/28 职场文书
写好自荐信的要点
2013/11/06 职场文书
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
贷款委托书范本
2014/04/08 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书
2019升学宴主持词范本5篇
2019/10/09 职场文书
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis