简介

    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)相关推荐

  1. 安卓入门系列-07常用UI控件(长文)

    常用UI控件 简介 这一篇介绍开发中的常用UI控件. 布局管理器 所有布局管理器都是ViewGroup的子类,都可作为容器类使用.继承自View,所以也可嵌套. 常见的布局之前已经提到了三种,这里不再 ...

  2. android md 控件,Android基本UI控件.md

    # Android基本UI控件 ## *TextView 文本框* ### TextView常用用法 | 主要方法 | 功能描述 | | :----------: | :--------------- ...

  3. Android - UI 控件

    输入控件是应用程序用户界面中的交互式组件. Android 提供了多种可以在 UI 中使用的控件,例如按钮.文本字段.搜索栏.复选框.缩放按钮.切换按钮等等. 用户界面元素 View 视图是一个在屏幕 ...

  4. Android开发详解:第4章《UI 控件》

    Android开发详解:第4章<UI 控件> 控件是Android程序设计的基本组成单位,通过使用控件可以高效地开发Android应用程序.所以熟练掌握控件的使用是合理.有效地进行Andr ...

  5. android ui组件开发教程,安卓开发入门教程-UI控件_Switch

    什么是Switch Switch是一种用于显示开关状态的UI控件. 基础样例 1.普通开关 效果图 代码 android:layout_width="wrap_content" a ...

  6. 【IOS 开发】基本 UI 控件详解 (UIDatePicker | UIPickerView | UIStepper | UIWebView | UIToolBar )

    转载注明出处 : http://blog.csdn.net/shulianghan/article/details/50348982 一. 日期选择器 (UIDatePicker) UIDatePic ...

  7. 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)

    博客地址 : http://blog.csdn.net/shulianghan/article/details/50051499 ; 一. UI 控件简介 1. UI 控件分类 UI 控件分类 : 活 ...

  8. JavaFX UI控件教程(二)之JavaFX UI控件

    翻译自  JavaFX UI控件 本章概述了通过API提供的JavaFX UI控件. JavaFX UI控件是使用场景图中的节点构建的.因此,控件可以使用JavaFX平台的视觉丰富功能.由于JavaF ...

  9. android 根据bounds坐标进行点击操作_炫酷的Android时钟UI控件,隔壁产品都馋哭了...

    废话不多说,先上效果效果酷炫,动画丰富,效果爆炸boom-设计思路看腻了市面上各种丑陋难看的时钟控件,是时候整点新活!将现实生活中的摆钟圆形表盘设计.电子手表的数显表盘设计抽象出来,提取出" ...

最新文章

  1. Spring Boot框架表达式注入漏洞
  2. JS正则表达式使用详解
  3. SQLite学习手册(在线备份)
  4. BigInteger用法-Java大数据存储、运算
  5. 看起来很美 VS. 是你来检阅我的忧伤了吗?
  6. 机器学习和深度学习笔记(Matlab语言实现)
  7. linux下共享文件夹(windows可访问,linux也可访问)
  8. SharePoint要在master page中动态显示List数据的几种方式
  9. 第十一章 图形视图、动画、状态机框架
  10. laravel 方法摘要
  11. 详细介绍Access数据库注入
  12. 最近写mapreduce程序从hbase中抽取程序遇到的一些问题
  13. Navicat数据备份、linux mysql定时备份定时删除、docker内部mysql定时备份定时删除
  14. go与python的前景_为什么说GO语言是未来前景看好的编程语言
  15. 经典鸡兔同笼同类型问题
  16. 计算机管理组合用户,Windows2000用户和计算机帐户管理
  17. Springboot毕设项目基于批示的督查督办管理系统c6m0djava+VUE+Mybatis+Maven+Mysql+sprnig)
  18. 【模板】线段树 2 洛谷P3373
  19. 公用移动数据通信网(CHINAMDN)(转)
  20. windows下RNDIS/Ethernet Gadget device驱动安装

热门文章

  1. proc_create的使用方法
  2. HTML做一个简单漂亮的宠物网页(纯html代码)宠物 5页(二级菜单)
  3. Android 10 终于来了!增加了不少新特性
  4. mongodb 安装记录 2017年11月21日
  5. Vivado、modelsim、VHDL错误集锦
  6. 卷积层网络CNN初学笔记(简单代码)
  7. 富士施乐248b粉盒清零_打印机DocuPrintM228B如何清零
  8. if_salv_gui_table_ida 实现 CDS VIEW ALV
  9. ringbuff | 通用FIFO环形缓冲区实现库
  10. dlib.get_frontal_face_detector() AttributeError: module ‘dlib’ has no attribute ‘get_frontal_face_de