目标:

Android到默认UI比iOS到默认UI在美观程度上还是有一定到差距的,我们希望能够美化UI,并且替换掉系统默认的UI风格,使得程序在使用这些UI的时候都默认使用我们自定义到UI。本文以ToggleButton为例,介绍如何使用,下图是效果图。

步骤:

1、设置XML属性
我们需要设置ToggleButton的背景,以及当ToggleButton为on或者off时到状态图。

首先,我们设置ToggleButton的背景,建立 /res/drawable/btn_toggle_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@+android:id/background" android:drawable="@android:color/transparent" /><item android:id="@+android:id/toggle" android:drawable="@drawable/btn_toggle" />
</layer-list>

在这里,我们使用layer-list把ToggleButton分成2个图层,底层是背景(设置成透明),顶层是selector效果图

接下来,设置ToggleButton的on和off的selector效果图:

建立/res/drawable/btn_toggle.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_checked="false" android:drawable="@drawable/btn_toggle_no" /><item android:state_checked="true" android:drawable="@drawable/btn_toggle_yes" />
</selector>

使用到以下两张图,也可通过以下链接查找http://bit.ly/pn5dmA

    
到此,我们已经把ToggleButton的效果已经制作完毕.

2、设置Style & Theme

ToggleButton到效果图已经制作完毕,接下来,我们就要把这种效果设置成一种统一的风格,否则我们在使用的时候必须每次都得显示指定这种风格,在这里,即:在声明ToggleButton的时候,每次都得指定android:background="@drawable/btn_toggle_bg"。

我们希望达到到效果是,当我们每次使用ToogleButton的时候,默认就是使用我们所设置的风格。在此之前,最好先阅读下android自带到文档:basics of creating Android themes,对style和theme有一定的了解。

接下来,建立/res/drawable/themes.xml文件

<style name="Widget.Button.Toggle" parent="android:Widget"><item name="android:background">@drawable/btn_toggle_bg</item><item name="android:textOn">@null</item><item name="android:textOff">@null</item><item name="android:clickable">true</item><item name="android:disabledAlpha">?android:attr/disabledAlpha</item>
</style>

在这里,要把textOn和textOff的属性设置为null,否则,系统会在按钮上显示文字,这个可根据使用情况而定。

然后,把该风格设置成主题

<style name="YourThemeName" parent="@android:Theme.Black"><!-- 告诉Android当创建ToggleButton的时候使用自定义风格 --><item name="android:buttonStyleToggle">@style/Widget.Button.Toggle</item><!-- 在这里可以添加更多的选项... -->
</style>

之后,只需要在AndroidManifest.xml的<application>标签里设置主题即可( android:theme="@style/YourThemeName")

3、注意事项

  • <重要>为了提供更通用到效果,应该把图片设置成.9.png格式,使图片可扩展
  • 很多人都以疑问,到底如何知道这些控件或者主题到属性? 这些都在Android到源代码里面可以找到,具体位置在\base\core\res\res\values\里
  • 项目源码下载:http://download.csdn.net/source/3470224

版权所有,转载请出明出处!

风格化的 Toggle Buttons相关推荐

  1. Toggle Buttons(一)

    现在我们已经了解了相对简单的Swing组件JLabel与JButton的功能,现在我们来了解一些更为活跃的组件,特别是这些可以切换的组件.这些称之为可切换的组件-JToggleButton,JChec ...

  2. Toggle Buttons(二)

    5.3 JToggleButton类 JToggleButton是第一个可切换的组件.首先讨论JToggleButton类是因为他是其他们非面向菜单的组件,JCheckBox与JRadioButton ...

  3. Toggle Buttons(四)

    5.5 JRadionButton类 当我们希望创建一个相斥的可切换组件组时我们可以使用JRadioButton.尽管由技术上来说,我们可以将一组JCheckBox组件放在一个ButtonGroup中 ...

  4. UE4 Slate概述

    Slate用户界面架构 On this page: 概述 声明式语法 构成 风格 输入 输出 布局图元 用户驱动的布局 开发者工具 引擎访问 概述 Slate 是一种完全自定义的.平台无关的用户界面架 ...

  5. jquery API

    jQuery API Documentation详细的API和例子说明,请参考文档:http://docs.jquery.com/Main_Page百度百科的解析:http://baike.baidu ...

  6. pyqt5教程9:Widgets组件

    PyQt5 widgets 小部件是应用程序的基本构建块. PyQt5 有各种各样的小部件,包括按钮.复选框.滑块或列表框.在本教程的这一部分,我们将描述几个有用的小部件:QCheckBox.切换模式 ...

  7. JDEManual2 Overview

    来源:http://aosgrp.com/ 2 Overview JACK™ Intelligent Agents supports two agent reasoning models: a bas ...

  8. python实例讲解wxpythonhyh123_Python实例讲解 -- wxpython 基本的控件 (按钮)

    使用按钮工作 在wxPython 中有很多不同类型的按钮.这一节,我们将讨论文本按钮.位图按钮.开关按钮(toggle buttons )和通用(generic )按钮. 如何生成一个按钮? 在第一部 ...

  9. GitHub托管BootStrap资源汇总(持续更新中…)

    Twitter BootStrap已经火过大江南北,对于无法依赖美工的程序员来说,这一成熟前卫的前端框架简直就一神器,轻轻松松地实现出专业的UI效果.GitHub上相关的的开源项目更是层出不穷,在此整 ...

最新文章

  1. 分享10个实用的高效办公神器,极大地提高办公效率
  2. Httpster –世界各地最潮的网页设计案例聚合网站
  3. Unity3d 在不同设备中的文件读写 的路径
  4. java 7 发布,【UC浏览器】Java平台7.0正式版发布啦
  5. android mtk 按键,Android 4.0 虚拟按键、手机模式、平板模式(转)
  6. python点击按钮改变图片_单击tkinter按钮时更改图片
  7. 《深入react技术栈》学习笔记(一)初入React世界
  8. Linq学习(零)-错误汇总
  9. 1709 - Index column size too large. The maximum column size is 767 bytes.
  10. C++ STL 程序员必须会之学会删除容器中的元素 带详细注释实例版本
  11. java安全管理器视频_安全管理器 (Security Manager)
  12. jmeter如何看tps_jmeter性能测试疑难杂症解决思路
  13. 用rest造句子_rest造句
  14. 基于PaddleX的岩石识别
  15. 5种小型设备上深度学习推理的高效算法
  16. 3D游戏的碰撞检测是如何实现的?
  17. 利用onnxsim对onnx模型进行简化
  18. asp.net mysql 查询_asp.net 多条件查询数据库
  19. repost 双非本科到腾讯的编程奋斗之路
  20. 【Baxter机器人末端轨迹坐标采集和轨迹还原】

热门文章

  1. 媲美ps的图像编辑器Affinity Photo 1.7.0.128中文版
  2. Qt4程序打包_包含MySql数据库情况下
  3. 用Requests库爬取微博照片
  4. android studio中添加retrolambda,并使用idk8新特性的配置记录
  5. Lecture 18
  6. JAVA笔记(五)-小数计算为什么会出错?
  7. Lu025基于Java的宠物领养系统【附相关文献】
  8. opencv 图像 抠图 算法_摄影领域的OpenCV教程之“蓝幕抠图”
  9. 扬州大学大一计算机课,扬州大学计算机硬件课程设计报告
  10. 什么是code-Behind技术?