Android—自定义开关按钮实现
我们在应用中经常看到一些选择开关状态的配置文件,做项目的时候用的是android的Switch控件,但是感觉好丑的样子…………
个人认为还是自定义的比较好,先上个效果图:
aaarticlea/png;base64,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" 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 深呼吸】设置序列化中的最大数据量
欢迎收看本期的<老周吹牛>节目,由于剧组严重缺钱,故本节目无视频无声音.好,先看下面一个类声明. [DataContract] public class DemoObject { [Dat ...
- .NET 串口通信
这段时间做了一个和硬件设备通信的小项目,涉及到扫描头.输送线.称重机.贴标机等硬件.和各设备之间通信使用的是串口或网络(Socket)的方式.扫描头和贴标机使用的网络通信,输送线和称重机使用的是串口通 ...
- ASP.NET Core的路由[5]:内联路由约束的检验
当某个请求能够被成功路由的前提是它满足某个Route对象设置的路由规则,具体来说,当前请求的URL不仅需要满足路由模板体现的路径模式,请求还需要满足Route对象的所有约束.路由系统采用IRouteC ...
- JS鼠标事件大全 推荐收藏
一般事件 事件 浏览器支持 描述 onClick HTML: 2 | 3 | 3.2 | 4 Browser: IE3 | N2 | O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击 onDb ...
- 说说BPM数据表和日志表中几个状态字段的详细解释
有个客户说需要根据这些字段的值作为判断条件做一些定制化需求,所以需要知道这些字段的名词解释,以及里面存储的值具体代表什么意思 我只好为你们整理奉上这些了! Open Work Sheet 0 Sav ...
- 拦截UIViewController的popViewController事件
实现拦截UIViewController的pop操作有两种方式: 自定义实现返回按钮,即设置UIBarButtonItem来实现自定义的返回操作. 创建UINavigatonController的Ca ...
- Linux基础介绍【第四篇】
Linux文件和目录的属性及权限 命令: [root@oldboy ~]# ls -lhi total 40K 24973 -rw-------. 1 root root 1.1K Dec 10 16 ...
- 跟着老男孩教育学Python开发【第二篇】:Python基本数据类型
运算符 设定:a=10,b=20 . 算数运算 2.比较运算 3.赋值运算 4.逻辑运算 5.成员运算 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**3 ...
- linux系统内存爆满的解决办法!~
1.首先用free工具检查一下内存的使用情况: 这个是我的linux时时数据 Mem: 4046824 763620 3283204 9004 10284 61560 -/+buffers/cach ...
- linux常用查看硬件设备信息命令
转载:http://blog.chinaunix.net/uid-26782198-id-3242120.html # uname -a # 查看内核/操作系统/CPU信息 ...