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简单实现步骤 ...
随机推荐
- [Spring]IoC容器之进击的注解
先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...
- Java中的多态
1.多态:具有表现多种形态的能力的特征 父类: public abstract class Animal {public abstract void Say();} 子类: public class ...
- TinyWeb v1.0 正式完成第一个Release版本(功能基于 libuv 跨平台库)
使用方法很简单,很容易融入现有项目,使现有项目拥有Web网站功能和WebSocket,以及Socket直连! 并且包含了一个跨平台(windows/linux)工具集合; 嗯,也挺棒的^,^ 在项目中 ...
- Security Policy:行级安全(Row-Level Security)
行级安全RLS(Row-Level Security)是在数据行级别上控制用户的访问,控制用户只能访问数据库表的特定数据行.断言是逻辑表达式,在SQL Server 2016中,RLS是基于安全断言( ...
- 【小计】新人Tostring前忘记Null判断的处理
ToString和string.Concat(可屏蔽Null的异常)性能相差不大,一些中小项目完全可以用Concat(新人容易忘记判断Null的情况,遇到太多了,所以建议重写tostring方法,内部 ...
- 玩转spring boot——结合JPA入门
参考官方例子:https://spring.io/guides/gs/accessing-data-jpa/ 接着上篇内容 一.小试牛刀 创建maven项目后,修改pom.xml文件 <proj ...
- Oracle 数据库知识汇总篇
Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...
- JAVA FreeMarker工具类
FreeMarkerUtil.java package pers.kangxu.datautils.utils; import java.io.File; import java.io.StringW ...
- [转载]一个标准java程序员的进阶过程
第一阶段:Java程序员 技术名称 内 容 说明 Java语法基础 基本语法.数组.类.继承.多态.抽象类.接口.object对象.常用类(Math\Arrarys\S ...
- 【干货分享】流程DEMO-外出申请
流程名: 外出申请 流程相关文件: 流程包.xml 流程说明: 直接导入流程包文件,即可使用本流程 表单: 流程: 图片:2.png DEMO包下载: http://files.cnblog ...