UI控件之开关按钮(ToggleButton与Switch)
简介
ToggleButton是状态开关按钮,而Switch是开关,我想说的是,看着ToggleButton的外貌就是气,也太难看了。相比较之下,我觉得Switch还是一个美男子。不说闲话了,这两者的原始外观如下:
布局一般都是采用XML布局,减少代码冗余,干净整洁,真是极好的,它们两个布局几乎一模一样。主要在于要注意设置两个属性: android:textOn 和 android:textOff 当处于checke状态的时候,显示android:textOn=“@String/”的文字,反之处于checke状态的时候,显示android:textOff=“@String/”的文字。
XML的简单实现
ToggleButton
<ToggleButton
android:id="@+id/toggle"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:textOff="不可见"android:textOn="可见" />
Switch
<Switch
android:id="@+id/toggle"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:textOff="不可见"android:textOn="可见" />
Switch和ToggleButton自定义
注意,我这里并没有对Switch和ToggleButton进行重写,只是对Switch和ToggleButton进行了属性的定义。但是对Switch的定义效果不理想,但是好在ToggleButton实现了预设的效果。
在对Switch进行自定义的时候,我采用了下列两种方法。
第一种是:google提供的android:track 和 android:thumb但是我实现的过程中,效果极其不理想,首先是两个图形的间距不好设置,大小设置也坑爹,居然使用thumb图像与文字间的距离来设置。也就是用android:thumbTextPadding进行设置。补充一下,android:track就是按钮移动的路径,android:thumb就是那个的移动按钮,难以自定义达到效果,坑爹啊!
第二种方法是:使用Switch的background属性来设置,但是Switch自带的图像十分影响美观!
利用ToggleButton实现的时候,效果还不错,但是有点生硬。
后来,我看见一篇博客通过重写View的方式实现了Switch开关功能的效果,同时过度是很流畅的,不会显得生硬:http://blog.csdn.net/singwhatiwanna/article/details/9254309 ,不过存在Bug,适当改进,效果应该可以很赞!说了那么多,还没看见图片,想是哪怕我说破了嘴,也没什么用吧!
看下面的GIF图片吧!
贴代码
由于,我没有在JAVA代码进行对按钮的控制,只是简单的使用了setcontentView进行显示而已!只贴XML代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><Switch
android:id="@+id/switcher"android:layout_width="330dip"android:layout_height="120dip"android:layout_gravity="center"android:layout_marginTop="10dip"android:textOff=""android:textOn=""android:textSize="45sp"android:thumb="@drawable/thumb"android:thumbTextPadding="70dip"android:track="@drawable/track" /><Switch
android:id="@+id/switcherr"android:layout_width="330dip"android:layout_height="120dip"android:layout_gravity="center"android:layout_marginTop="10dip"android:background="@android:color/transparent"android:button="@drawable/def"android:textSize="45sp" /><ToggleButton
android:layout_width="330dip"android:layout_height="120dip"android:layout_gravity="center"android:layout_marginTop="10dip"android:background="@android:color/transparent"android:button="@drawable/def"android:textOff=""android:textOn=""android:textSize="45sp" /><com.example.toggletest.SlideSwitch
android:layout_width="330dip"android:layout_height="120dip"android:layout_gravity="center"android:layout_marginTop="30dip" /></LinearLayout>
点击下载源码
总结
就效果来说,还是任玉刚博主的效果好一点,将bug去掉就很好了(有空一定研究研究),但是ToggleButton实现起来很简单。不过效果生硬了点! 鱼与熊掌不可兼得啊!
——————————————————————————————-
欢迎转载,尊重作者劳动成果,转载请务必注明出处
技术因分享而饱含生机 ——————————————————————————————-
UI控件之开关按钮(ToggleButton与Switch)相关推荐
- 安卓入门系列-07常用UI控件(长文)
常用UI控件 简介 这一篇介绍开发中的常用UI控件. 布局管理器 所有布局管理器都是ViewGroup的子类,都可作为容器类使用.继承自View,所以也可嵌套. 常见的布局之前已经提到了三种,这里不再 ...
- android md 控件,Android基本UI控件.md
# Android基本UI控件 ## *TextView 文本框* ### TextView常用用法 | 主要方法 | 功能描述 | | :----------: | :--------------- ...
- Android - UI 控件
输入控件是应用程序用户界面中的交互式组件. Android 提供了多种可以在 UI 中使用的控件,例如按钮.文本字段.搜索栏.复选框.缩放按钮.切换按钮等等. 用户界面元素 View 视图是一个在屏幕 ...
- Android开发详解:第4章《UI 控件》
Android开发详解:第4章<UI 控件> 控件是Android程序设计的基本组成单位,通过使用控件可以高效地开发Android应用程序.所以熟练掌握控件的使用是合理.有效地进行Andr ...
- android ui组件开发教程,安卓开发入门教程-UI控件_Switch
什么是Switch Switch是一种用于显示开关状态的UI控件. 基础样例 1.普通开关 效果图 代码 android:layout_width="wrap_content" a ...
- 【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )
转载注明出处 : http://blog.csdn.net/shulianghan/article/details/50348982 一. 日期选择器 (UIDatePicker) UIDatePic ...
- 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
博客地址 : http://blog.csdn.net/shulianghan/article/details/50051499 ; 一. UI 控件简介 1. UI 控件分类 UI 控件分类 : 活 ...
- JavaFX UI控件教程(二)之JavaFX UI控件
翻译自 JavaFX UI控件 本章概述了通过API提供的JavaFX UI控件. JavaFX UI控件是使用场景图中的节点构建的.因此,控件可以使用JavaFX平台的视觉丰富功能.由于JavaF ...
- android 根据bounds坐标进行点击操作_炫酷的Android时钟UI控件,隔壁产品都馋哭了...
废话不多说,先上效果效果酷炫,动画丰富,效果爆炸boom-设计思路看腻了市面上各种丑陋难看的时钟控件,是时候整点新活!将现实生活中的摆钟圆形表盘设计.电子手表的数显表盘设计抽象出来,提取出" ...
最新文章
- Spring Boot框架表达式注入漏洞
- JS正则表达式使用详解
- SQLite学习手册(在线备份)
- BigInteger用法-Java大数据存储、运算
- 看起来很美 VS. 是你来检阅我的忧伤了吗?
- 机器学习和深度学习笔记(Matlab语言实现)
- linux下共享文件夹(windows可访问,linux也可访问)
- SharePoint要在master page中动态显示List数据的几种方式
- 第十一章 图形视图、动画、状态机框架
- laravel 方法摘要
- 详细介绍Access数据库注入
- 最近写mapreduce程序从hbase中抽取程序遇到的一些问题
- Navicat数据备份、linux mysql定时备份定时删除、docker内部mysql定时备份定时删除
- go与python的前景_为什么说GO语言是未来前景看好的编程语言
- 经典鸡兔同笼同类型问题
- 计算机管理组合用户,Windows2000用户和计算机帐户管理
- Springboot毕设项目基于批示的督查督办管理系统c6m0djava+VUE+Mybatis+Maven+Mysql+sprnig)
- 【模板】线段树 2 洛谷P3373
- 公用移动数据通信网(CHINAMDN)(转)
- windows下RNDIS/Ethernet Gadget device驱动安装
热门文章
- proc_create的使用方法
- HTML做一个简单漂亮的宠物网页(纯html代码)宠物 5页(二级菜单)
- Android 10 终于来了!增加了不少新特性
- mongodb 安装记录 2017年11月21日
- Vivado、modelsim、VHDL错误集锦
- 卷积层网络CNN初学笔记(简单代码)
- 富士施乐248b粉盒清零_打印机DocuPrintM228B如何清零
- if_salv_gui_table_ida 实现 CDS VIEW ALV
- ringbuff | 通用FIFO环形缓冲区实现库
- dlib.get_frontal_face_detector() AttributeError: module ‘dlib’ has no attribute ‘get_frontal_face_de