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简单实现步骤 ...
随机推荐
- 理解Maven中的SNAPSHOT版本和正式版本
Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...
- 一个免费的、跨平台的、开源音频编辑器Audacity
Audacity 是一个免费的开源程序,用于编辑音频录制.它可在多个平台(windows/linux)上运行.Audacity 基于 GUI,是一个具有多种选项的强大程序.它支持您录制各种类型的声音. ...
- CSS HTML元素布局及Display属性
本篇文章主要介绍HTML的内联元素.块级元素的分类与布局,以及dispaly属性对布局的影响. 目录 1. HTML 元素分类:介绍内联元素.块级元素的分类. 2. HTML 元素布局:介绍内联元素. ...
- Asp.Net 操作XML文件的增删改查 利用GridView
不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...
- 通过AngularJS实现前端与后台的数据对接(一)——预备工作篇
最近,笔者在做一个项目:使用AngularJS,从而实现前端与后台的数据对接.笔者这是第一次做前端与后台的数据对接的工作,因此遇到了许多问题.笔者在这些问题中,总结了一些如何实现前端与后台的数据对接的 ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- 【uwp】浅谈China Daily 中划词翻译的实现
学习uwp开发也有一段时间了,最近上架了一个小应用(China Daily),现在准备将开发中所学到的一些东西拿出来跟大家分享交流一下. 先给出应用的下载链接:China Daily , 感兴趣的童鞋 ...
- 【干货分享】流程DEMO-出差申请单
流程名: 出差申请 业务描述: 员工出差前发起流程申请,流程发起时,会检查预算,如果预算不够,将不允许发起费用申请,如果预算够用,将发起流程,同时占用相应金额的预算,但撤销流程会释放相应金额的预算. ...
- Android之网络数据存储
一.网络保存数据介绍 可以使用网络来保存数据,在需要的时候从网络上获取数据,进而显示在App中. 用网络保存数据的方法有很多种,对于不同的网络数据采用不同的上传与获取方法. 本文利用LeanCloud ...
- javaMail
JavaMail概述: JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类.但它并没有包含在JDK中,而是作为JavaEE的一部分. javaMai ...