Android—自定义开关按钮实现
我们在应用中经常看到一些选择开关状态的配置文件,做项目的时候用的是android的Switch控件,但是感觉好丑的样子…………
个人认为还是自定义的比较好,先上个效果图:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKQAAACmCAIAAADbH7MdAAATQUlEQVR4nO2deXAk1X3Hew/WCy6OEKcCpDgDZRepVFwFwaFyx5WUkxBbI7G7wIJZlqOAwlyGcBjsYAowjr0GnCVc4bbXlDlWx0i7Wu3J6hrNjM6VRnNojr67Xx8zOno0PaNf/nij1rGwrKa7pRH9PvX++HVr+/V39dXv91739LymvvbaNGkeaVRrRxgoCjcSf7ljaoDwZWRwcPD4nVSS8GUnlUolk0mgKIoleAOgKIojeAOgKIrneUEQBEHgeb6C2ObhyxlXiYwVlEqJBG8AFEVJBG8AFEXJlSJJUsXHLjOrSCrGDcFlsxFCCCG8a6mxzcOXM64SGSsolUKVYnVU/aygVFmWRVHkOC6TyaRTqVQqla6UVDodSaY/itB39vJf75Qu7NQu7Mpe2JWbbdmLuvTLOiRfV+a9CB1hOGnh/xooikJV9tfnRrxSp5YkiWGYTDqdyWTwxS7HcVbwhfH8TYZl2xJcbQid2TlBdRWoQJHqmaGCx7VAkeo2N7SPX9nO/X44yQuiJYmY7WIsiiJN0zRN8xyHx+CKZYuy/GEKXR6cWBswqeAMFQQqdMIWnFnTbZ7XrrwUjnOCIM83m+A4kiRhp0VRtNmVjFBLRrkoMEn1nITN81tP6eyj2m/7Ry0NxGznkWWZZVmGYSRJst9bXETf7htf01Nags1zfhev+pTpi48hUsZdigVBoGlamK2fNmW/MqZtDBQs/04JwzePwTVR+PsInNYLVAjWhuAvh+EbQ7AmBFQIzu2Hbxwrx1QIvtI59ctARMaXXojgNDitLefswEjomsEJKjiDnVsfhocY6BmH9xU4lIP/leDsftgQho8VOJiD8waACsHWBOwU4SthK7lnrjmaZBiGmO08sizTNM3zvCO99fPosnDeSuu/i0JgAv56BDaE4YIB+ESF+zOwIQzNGgxOwrMcUCHYNgZvyrDRMjs4c2m7FI/HERmzHQdfbjkyWiOEOjj1D4Imtm1dCB6mYacI62aNvCsFb8pwRi80qnBXGg5l4W8icMtxZl/QoUUiEZLZziNJEsuyTpn9KaeeHipaNfy/OXiOhXWziX7zGLwrw5m90KjC1RHYloQmDR5OLzQ7BOd36sRsV8AXXU6ZHeDUc8Nls9eE4MYk7Nbgq31AhWBdGJ4W4DkeNs6afWYf7FKgMwdvLchs+NMOFI/HidnOg80WBMGR3kZF5aqBuTH7/AHYn4WdImwbgydZOJKFK4dhQ7hsNhWCq0ZgLA/voQVl/F/a0zRNIzJmuwHDMCzLOtKVJKP7ohNr5106XzII99PwcxEeYeCKY7A2BOvCsHUMzh8op/t3E1CbgPWzZp/SU3i2m1x6uYYgCJlMxsE52sV95qK7JevDsGjP57UrOoWeaAKR26UuIcsywzBOXWqLCP0sMX5aeKaCO2hnBYxXwxFBFBEx2z3wyO3UNVhGVh6NT5zeuzS//7Bn8tlgnOE4qx9itlvgT70ymQy38FOvyqBl5cVk7s8GzA2hL7Z8Q7B4eUB/dWAsw845TTLbXSRJwo8tYBh70AwTTLHPjcj/0Je9uNe4uLdwcZ+5oPUWLgtP/FtY/tUQPTCWXlRUiNnLgSRJPM/jG+b2yTBslGaHae4zW4Thxjhe/Kyxo2y2oiiKouBdS41tHr6ccZXIWEGpxOxqjN3olpRxD0HM9hBAUZRSKWi2RFQ/q0gqxiXBxOxqxA3B5czGaW6d5iTjCg5ZqbhKZKysbGJ2VcfOdmtrzCasOkhmV2/sbLdAUVSU4A1IGfcQxGxvQcz2CiSzPQQx20MQs70FMdsrkMz2EMRsD1E2W1VVVVXxrqXGNg9fznilTo1ERop3c8HfCB2/ltp3yB075I4dUjtuv+I7/ifd/dvksQ46nWBZxv7qwzzPy7L8mf9lYraLsYIkMXJI2P+E0rBVq6/L1teM139vfsvV12Tra9TddcLuG+N7nhrtO0zT5SeOsXMnHy946JimOY7Dt8QtSaSMuwgSMmLgDbX+uvGGmqkmn+E/UZtq8uXqa/j6W2LdHws8V/lJEZJlmed5vFaTJEnWj4CiqFWUKKtIqiILUtfL2YZrv9Dm+W2ysUZquCnW02TV4YplyLMrNuGuVFUlY7ZLMZKGGrONm5fkNG4TTTVM012JkRDuzY4MhBCu89bHncRs52PExZW2ByYtp1uuy7fdlt+33Wi+trxnzw35ttvybbcZeOferXgzv2+74a/NNdSOHnpFFEX7kvBqPqIoKqSMuxTLx/y5xjrD7zP8tfkjDxbZ9pI8VJKPmfHdxr5tht9XGHi9pCVKaKTIdubbbjWH3y9pY3jT2HP9VJOP8d+bSkQckYS/eaQQs12KUceOycYaw+8zWm8uSf1mfHf+4N35Iw8WuS4zXm80X2tGdpmJ3fnD9+UP3mM0bzLj9WasPn/4gfzBe4zmOsPvQ43fj/a3OyIJf5kU4efGVYKjIIS0Aw9PNdUYft90549LWsLYtx1X7+mup0rKaL71ZjOyyxz9XX7ftnzrjYa/1oztLox+kG/bnm+9yfDXGn5ftnHzSE+rZZgd8EwNIaSqKjHbYRBC2bZ78NSsEHqhyAWMPTdgs/NHHizKg/n9t5uRXTOTUkmNFcf8xp7rzHhDaVIuqbFi+oDRssXw+8abNo307HHEbDxNK6+pUnEvjkhZHpZTKkJIP/AQNnu648mSlsi33VbO7MAzRTRs7L3JjOwyox/m99+R37etnNnRD/MH7sQTNMPvyzZdPxo+4JTZ+AKMlHHnQQgpHT/HZdxo3VaUh8zoR/nD9+U/fbjIBwqjHxjNdWZklzn8tnW5ZcZ2F469g0dr3GT/rYnhHkfMxisukjHbFRRFkYcaJv2brNm4mW4rir1FIVwYfheX9ELfrwvhHZa1hYHXpsM7jOba8t00v49ufYKh047oEXieZVkcE7OdR6JHswcemLtV0lxntG4z9m7FJRr/EcyLF2/m/NfFuj+RZdm+EkVRGIYRBEHFd9Ds90hYBEKydKxlcnZetqQ25a/L7H+GySQdUcLzPK7hKjHbPSSBRcHXp5q3LNHpWqH1oXS01/5orSgKdlqSJLyHmO0iEs/I/R9M7Lvd8NedhNO1E83X84efpRODNp1WZj8FwTdK5/+ImO0ikiQIiaASeDm7/97x5usXjtPludhE0ya1eTt/4CepcCOTTgj24DgOf56Nl8GeL4ZktusoiiKJgpCJ8omQEOsWYl2LGh8L0PH+TCpB28N6nAGvsXd8eSBmLx/KQlz6/uYJhgBitregVFXVNE3TNLy91Njm4csZV4mMlZJKMttDELM9RNnsais4LsVVImMFpVJapVgdVT+rSCrGDcGkjHsIoChKq7JS40ZcJTJWVnbZ7Mqwuqt+VpFUjEuCqQTBG5DvenkIW2WcsLogZnsLYrZXIJntIYjZHoKY7S2I2V6BZLaHIGYvE4qiyLIsSZIoipI9eFEKstLvUuj9lPp+SlvY1F0p+WBGEGV0vAZitusghPDD+vgJXzuMZej6KLM1JF7Sqa1vH6c6DKozv7AZ69rH/7hd+05AeCtC05K8SAwx20UkSWJommVZURTnPwBaAWlJ+cmIek7XJNVtUj0lKjhDBT/r5dnBGSo4Q3WbG4/mbg2kh2jOEkMy20VEQaBpWhAERVFsdpVG2l3D2VO7p6meL35TuuX6+q789zoyUZrFnRCz3QJ/K1qSJPtdyar2bDx7aqDw2an8BX4b93fHOVHUiNkuoSgKLt2O9NYt6OcHjflOrw/DxjBsCM/tOSUM62c314bmYio4c1670jKcwF1Rmqbpuq7rOt5eamzz8OWMl+10kiTh77/bl6po2g9Hx9f1lCxfLxmC5zj4vQJvSPBXkbK1j2Xg7jSsCwMVgr8dge2pckyFYG3A/GFXvLzygkZwGo7jBEFwpKsxpF3dP0UFy0P1OQPg1+H/JPh2FB5l4Og4XB2BDWFo0SCdh3+OAhWCbWPwpgwbreTumbmynWUYhpjtPKqqciyL0Gdc6VZAWNT/JDSNbVsTgs1JaNLgzD6gQrAuDM/x8AsBNoahSYXfIGjU4Iy+48wOzlzUqZafVHFEE8FCURSO4+zPwDEdYvaMYNEaqp/n4GcsrJst6Tcl4D0ZzuqFRhW+E4N3ZHiAhtuSi8yGCzqzsVhM0zRKrxRtdlypfpZTKjYbD9gVYwnuErNnhctmrwvBj2jYKc6Nx3en4XUZTu+FRhWujsAVw9CVg538QrNDcGGnHo/HgaKI2Q6jqipeK9ROJ5bgQSl7aZ9p2faPoxCYgL8Yga/2wjkD8LEGd6dhQ7hs9toQPEQDk4d3FpbxP+8QMplM2WxcMazTnGRcwSErFS/n6VRVxV+Hd0Q2p+r/Ppy3zN7YC48x0J6DJg2OZOGXPJzVBxvC8AGCq0aACsEf9UO9Dq9Jc2avCZZu70xIkkTMdiUWRRFXcvuyNU17LTOxMTR34+yUMJw7AN8cgfMH4dRweeL2tf65y+6z+uDsflgz++/P7p7YNRDFPVdexgmfB76pIkmSI72lFP1fh6ct85bU1gRLN3an0iyn67qtMZvweeDkxiuGWslaeW+6fkDIXT5gLtXvtaGZb3XL3bEk1kDMdgtN0wRBYBhGFASbM3Nd11Vdb+Nz3xoy15+00+uDxX/qkQ5Hk9bZidkugvMbv6VD4Hmby1MiRe0XtR/FJy7tK2wMFa17aovrdqh0Wsj8ejD3RD89lGEX/Z0Rs91FURQ8X7P/8AJN06kMHUqxO2Pi46Pq49Hs49Hcwqb/OILeGmVHGU5CaNEIQjJ7mVBVVZm37JV7KIoy/ypgPsRsD0HM9hbEbK9AMttDELM9BDHbWxCzvUI5s7PZbDabxbuWGts8fDnjKpGxUlJJGfcQQFEUS/AMlM2XUhBWC2TMrtLYjW7JmO0hgKKoqvrrcymuEhkrLpvKVorVRfWziqRi3BBczuzKWEW/wVUkFeOi2VVSZFZRPVyNsonZVR073m3lZZywurA1ZhOWgK7pmqKrcva4pquyrim67ti30T5PAjHbXXRd1xVRjh8V21/gGu4QP6qTP/wPNK9JH35X+LAu+cmdsbYdo+H9yUQ8nU5nKiKdTqfTaTqTYVkWv0l5kRhitpvousqOip8+rzRcn6uvmWismWzyTR3XJptqJhpqsvU1wu4b44deptPxRU+LKkt5/aosy9aTy7IsL0p0YrZbKMkAar1vvME32fSFb0r3GX7fZGONXl+Xav0pm47aPLWmaXhdF1EULb9JZruFysfQvvsnGmumTs7p8rvTm2r0hrrEwZdEgbMpQNd1hBDLsrIs4z3EbFfQVYS6XppoXILNc377fUrD9dHQ3hNMtU4eWZZZltU0LUvMdgk13au3bJvC/rVsyn/6SKHvlULvzvyBuwx/neH35Y88VOh/tdD/6nT4RWPP1umjj+LNQvhFo2XTRKMvue9pUeDtK9F1ned5SZLwJjHbeZTe9ycaawy/z2jeVDj2VklPmkl/MXOgpIxOd/6X4a81I7tK6mgxvc+MfZLft82M15eU8qaxZ8tUk09suiMVHXBEjCzLHMdlSWa7ga7r6pGnpppqDL8vf+gHpRw93fVTo3mT0bLFHH6/KISMli1mZJc58p7Rstlo2WT4a83Y7sLwe8ae64yWTbiYa403xPqPOKIHrwyg4eUsHemRYKFpWnb/fXheVuh5vij2GXtvxBZOH/3PIhrOt91mRnYVuY7C4CvTgWeM5k1mvL7IdRYGXy0EnzearzX8vlzjptFQq1N6eJ4nZruCpmnZ/feW3Q3+oiiGjb1b8WZ+ntklJVJM7ikMvmG0bDbjDUUlUkztLQy/a7RsNvy+8abN0XCbU3qw2Vk8ZudyuVwuh3+21Njm4csZL8/pNE3Tjzw5W8bvK+Xo/NHHDL/P8NcWht4uCj3lMj78tjUDN2O7C8feMZrrrD2a/6bEUIcjsjVN4zhuLrOr/zfoSLw8p9N1XQm+Xr68btlixj4uykNm9CNzzF+Uh6a7yhO0E5stttxDj0UckY0QWmA2wVmUsa6JPd8vO9eyZbrjycLQm4X+l/OHflCu54fvzR+6x7I2f+SB+ZuT/trU4ZesmyE2EQRBFMUsmY27hCrzWtcvDH/t3N2S5roFmydsqOWO5EjAGSWzyy3iTVLGXYlRZnj8wL0nb7DVxptvSAU+UBRkU0Y2m7XWWtStJ1VylWKdoPpZfqm6pqFE51L9zjXfkOl6W5Z4+4LxermCIOB5eC6XK5td/YliM16RU2uaJtPDavcLE3tvOXEZn/LXTjRfhw48xh3bpyBbQ7WmaYqiCILAzr63wpJEzHY31nUdSYKcDKHwu+qnT+cOPzp++JH5LXf4EfXwk+yRF5LhxmTsGMPQjG1YluV5HiGUna3nlqTKyzjhJNF1XVVV63kEWZZlWT6Z+CT/2aLVsfBCd8fLIGN2leKGYFLGqzp2tltbmU1YdRCzvQLJbA9BzPYQxGxvQcz2CiSzPQQx20MQs70FlcvlxsfHx8fH8fZSY5uHL2dcJTJWSmo5s6tN1ir6Da4iqaSMewhitregxislN1siqp9VJBXjhmAyZldp7Ea3QFFUVQlaRb+7VScbKOr/AU8HrTtCRFkjAAAAAElFTkSuQmCC" alt="" />
实现过程:
1.准备开关不同状态的两张图片放入drawable中。
2.xml文件中添加代码:
<ToggleButton
android:id="@+id/switch1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@android:color/transparent"
android:button="@drawable/btn_backgrounds"
android:checked="false"
android:textOff=""
android:textOn="" />
android:button="@drawable/btn_backgrounds"是自己定义的android selector文件:
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/toggle_btn_on" />
<item android:drawable="@drawable/toggle_btn_off" />
3,之后在java文件中声明ToggleButton控件并且实例化,添加点击事件:
/**
* 自己出创建的内部类,监听按钮点击事件
*
* @author cyf
*
*/
class MyOnCheckedChangeListener implements OnCheckedChangeListener { @Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) { if (arg1) {
// 开
} else {
// 关
} } }
4.添加监听:
switch1.setOnCheckedChangeListener((OnCheckedChangeListener) new MyOnCheckedChangeListener());
笔记备忘一下,这个没有Switch的滑动效果~~~
Android—自定义开关按钮实现的更多相关文章
- android 自定义动画
android自定义动画注意是继承Animation,重写里面的initialize和applyTransformation,在initialize方法做一些初始化的工作,在applyTransfor ...
- Android自定义View 画弧形,文字,并增加动画效果
一个简单的Android自定义View的demo,画弧形,文字,开启一个多线程更新ui界面,在子线程更新ui是不允许的,但是View提供了方法,让我们来了解下吧. 1.封装一个抽象的View类 B ...
- Android自定义View4——统计图View
1.介绍 周末在逛慕课网的时候,看到了一张学习计划报告图,详细记录了自己一周的学习情况,天天都是0节课啊!正好在学习Android自定义View,于是就想着自己去写了一个,这里先给出一张慕课网的图,和 ...
- (转)[原] Android 自定义View 密码框 例子
遵从准则 暴露您view中所有影响可见外观的属性或者行为. 通过XML添加和设置样式 通过元素的属性来控制其外观和行为,支持和重要事件交流的事件监听器 详细步骤见:Android 自定义View步骤 ...
- Android 自定义View合集
自定义控件学习 https://github.com/GcsSloop/AndroidNote/tree/master/CustomView 小良自定义控件合集 https://github.com/ ...
- Android 自定义View (五)——实践
前言: 前面已经介绍了<Android 自定义 view(四)-- onMeasure 方法理解>,那么这次我们就来小实践下吧 任务: 公司现有两个任务需要我完成 (1)监测液化天然气液压 ...
- Android 自定义 view(四)—— onMeasure 方法理解
前言: 前面我们已经学过<Android 自定义 view(三)-- onDraw 方法理解>,那么接下我们还需要继续去理解自定义view里面的onMeasure 方法 推荐文章: htt ...
- Android 自定义 view(三)—— onDraw 方法理解
前言: 上一篇已经介绍了用自己定义的属性怎么简单定义一个view<Android 自定义view(二) -- attr 使用>,那么接下来我们继续深究自定义view,下一步将要去简单理解自 ...
- Android 自定义view(二) —— attr 使用
前言: attr 在前一篇文章<Android 自定义view -- attr理解>已经简单的进行了介绍和创建,那么这篇文章就来一步步说说attr的简单使用吧 自定义view简单实现步骤 ...
随机推荐
- .NET Core全新路线图
.NET Core / ASP.NET Core 1 RTM发布两周后,社区也很积极,收到了非常多的反馈,上周五微软的scott Hunter 在dotnet团队官方博客上发布了.NET Core全新 ...
- git亲测命令
一.Git新建本地分支与远程分支关联问题 git checkout -b branch_name origin/branch_name 或者 git branch --set-upstream bra ...
- 从Vue.js窥探前端行业
近年来前端开发趋势 1.旧浏览器逐渐淘汰,移动端需求增加: 旧浏览器主要指的是IE6-IE8,它是不支持ES5特性的:IE9+.chrome.sarafi.firefox对ES5是完全支持的,移动端大 ...
- C# 给word文档添加水印
和PDF一样,在word中,水印也分为图片水印和文本水印,给文档添加图片水印可以使文档变得更为美观,更具有吸引力.文本水印则可以保护文档,提醒别人该文档是受版权保护的,不能随意抄袭.前面我分享了如何给 ...
- Maven搭建SpringMVC+Hibernate项目详解 【转】
前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...
- 第10章 Shell编程(4)_流程控制
5. 流程控制 5.1 if语句 (1)格式: 格式1 格式2 多分支if if [ 条件判断式 ];then #程序 else #程序 fi if [ 条件判断式 ] then #程序 else # ...
- 学习笔记:Maven构造版本号的方法解决浏览器缓存问题
需要解决的问题 在做WEB系统开发时,为了提高性能会利用浏览器的缓存功能,其实即使不显式的申明缓存,现代的浏览器都会对静态文件(js.css.图片之类)缓存.但也正因为这个问题导致一个问题,就是资源的 ...
- Ubuntu下利用Mono,Jexus搭建Asp.Net(MVC) Web服务器
最近在Ubuntu上搭建了Asp.Net的Web服务器,其中遇到很多问题,整理一下思路,以备后用. 搭建环境以及配套软件 Ubuntu: 11.10 Mono:3.0.6 下载地址(http://do ...
- CentOS7下自定义目录安装mono+jexus教程
一.阅读前须知: 1.本文属于安装完Centos7之后的步骤 2.如果还不了解mono,请点击mono 3.本篇主要内容是使用自定义目录安装mono+jexus教程,使用默认目录请查看使用默认目录安装 ...
- 使用Hystrix提高系统可用性
今天稍微复杂点的互联网应用,服务端基本都是分布式的,大量的服务支撑起整个系统,服务之间也难免有大量的依赖关系,依赖都是通过网络连接起来. (图片来源:https://github.com/Netfli ...