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 相关文章推荐
解决Maven项目中 Invalid bound statement 无效的绑定问题
Jun 15 Java/Android
Feign调用全局异常处理解决方案
Jun 24 Java/Android
图解排序算法之希尔排序Java实现
Jun 26 Java/Android
Springboot集成阿里云OSS上传文件系统教程
Jun 28 Java/Android
Java Socket实现多人聊天系统
Jul 15 Java/Android
java设计模式--原型模式详解
Jul 21 Java/Android
聊聊SpringBoot自动装配的魔力
Nov 17 Java/Android
OpenCV实现反阈值二值化
Nov 17 Java/Android
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
Apr 08 Java/Android
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
Jun 01 Java/Android
详解Flutter自定义应用程序内键盘的实现方法
Jun 14 Java/Android
Java实现HTML转为Word的示例代码
Jun 28 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入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
php使用ICQ网关发送手机短信
2013/10/30 PHP
php短信接口代码
2016/05/13 PHP
Yii2单元测试用法示例
2016/11/12 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
JQuery实现展开关闭层的方法
2015/02/17 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
利用D3.js实现最简单的柱状图示例代码
2016/12/09 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
python实现扫描ip地址的小程序
2019/04/16 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
2019/04/27 Python
Python绘制热力图示例
2019/09/27 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
成人大专生实习期的自我评价
2013/10/02 职场文书
工程师求职简历的自我评价分享
2013/10/10 职场文书
小班幼儿评语大全
2014/04/30 职场文书
单位更名证明
2015/06/18 职场文书
师范生见习自我总结
2015/06/23 职场文书
2015年学校办公室主任工作总结
2015/07/20 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python