2019独角兽企业重金招聘Python工程师标准>>>

(1)在开发中,我们经常会遇到一些纯色或带边框的简单样式的按钮或div,很多时候,都是用九宫格的背景图片来贴上去。但仔细想来,使用图片也带来了一些性能上的问题,包括过多的图片文件会导致渲染页面的时候需要加载渲染很多图片,以及图片也会带来安装包的增加,最后就是用图片很麻烦的说,就如能够用xml文件配出来,就不用再等UED了。

(2)按钮文字颜色在不同的状态下也不一样,最开始比较傻,直接通过代码来动态改变,想想就恶心。其实这也是可以通过XML配置出来的。

好,下面就进入正题吧。

注:以下并不局限于按钮,照样可以用于各种view的background。

一)、配置按钮背景

Android能够支持shape、selector等。shape顾名思义就是定义一个形状,包括边框、填充色、圆角等。如下实例:

  1. <shape  xmlns:android="http://schemas.android.com/apk/res/android"  android:shape="rectangle">  <gradient android:startColor="#FFFF0000"  android:endColor="#80FF00FF"  android:angle="270" />  <padding android:left="50dp"  android:top="20dp" android:right="7dp"  android:bottom="7dp" />  <corners android:radius="8dp" />  <solid android:color="#b4000000" /> <stroke android:width="2.0dip"  android:color="#b4ffffff"  android:dashWidth="3.0dip"  android:dashGap="0.0dip" />
    </shape>

简单说明下:

gradient   -- 对应颜色渐变。 startcolor、endcolor就不多说了。 android:angle 是指从哪个角度开始变。

solid      --  填充色。

stroke   --  边框,其中width就是边框线的宽度。

corners  --  是否添加圆角,radius就是圆角的半径。

padding   -- 定义内容离边界的距离。 与android:padding_left、android:padding_right这些是一个道理。

细心的读者就会想到,这个shap好像只描述了一种状态啊,怎么表示按钮的其他状态呢?那就得用到selector了。

selector顾名思义表示选择器的意思,就是能够根据不同的状态选择响应的参数。好了,直接亮代码吧,多说无益:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true"><shape android:shape="rectangle"><solid android:color="#53cbff" /><corners android:radius="3dp" /></shape>      </item><item android:state_selected="true"><shape android:shape="rectangle"><solid android:color="#53cbff" /><corners android:radius="3dp" /></shape></item><item><shape android:shape="rectangle"><solid android:color="#44b2ff" /><corners android:radius="3dp" /></shape></item>
</selector>

效果就不再展示了,就是一个蓝色的按钮。

二)、配置按钮的颜色方案

我们经常会遇到常态是按钮背景是深的,按下去后是浅色背景,这时候就需要按钮文字颜色也能够随之改变,否则效果就大打折扣了。

肯定,你也会想到其实只要和selector配合使用就好了,如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_focused="true" android:color="#ffffff"/><item android:state_selected="true" android:color="#ffffff"/><item android:state_pressed="true" android:color="#ffffff"/><item android:color="#aaaaaa"/>
</selector>

使用的时候在android:textColor="@drawable/****"就好了。

好了,具体怎么灵活使用以及他们的含义就自己用实践去摸索吧。

转载于:https://my.oschina.net/cheneywangc/blog/195731

Android UI:XML文件配置按钮等背景方案相关推荐

  1. android shape 按钮背景_Android UI:XML文件配置按钮等背景方案

    (1)在开发中,我们经常会遇到一些纯色或带边框的简单样式的按钮或div,很多时候,都是用九宫格的背景图片来贴上去.但仔细想来,使用图片也带来了一些性能上的问题,包括过多的图片文件会导致渲染页面的时候需 ...

  2. android xml导进数据库,Android通过xml文件配置数据库

    之前一段时间自己封装了两个数据库,一个是ORM数据库,另一个是事件流数据库,项目相应的地址如下: ORM数据库:https://github.com/wenjiang/SimpleAndroidORM ...

  3. Android生成Xml文件

    我们在开发的过程中,有时会用到将一些数据保存到xml文件中,在Android中给我们提供了xml序列化来帮我们创建一个xml文件,这里我用两种方式来创建xml文件. 一.使用字符串拼接的方式来创建 二 ...

  4. AndroidManifest.xml文件配置教程及相关指令详解

    AndroidManifest.xml 是每个android程序中必须的文件,它位于整个项目的根目录.我们每天都在使用这个文件,往里面配置程序运行所必要的组件,权限,以及一些相关信息.但是对于这个文件 ...

  5. SpringSecurity使用 配置文件 和wen.xml 文件配置

    目录 1.web.xml 文件配置 2.spring-security  普通 为使用自己创建的认证类 1.web.xml 文件配置 !-- 配置SpringSecurity的拦截器 -->&l ...

  6. eclipse mysql Xml配置_mysql8.0在eclipse中通过xml文件配置数据库连接池

    mysql8.0在eclipse中通过xml文件配置数据库连接池 1.关于Mysql8.0 2.数据库连接池(DBCP) 3.准备工作 4.配置context.xml 5.配置web.xml 6.调用 ...

  7. java spring bean配置文件_Spring基于xml文件配置Bean过程详解

    这篇文章主要介绍了spring基于xml文件配置Bean过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过全类名来配置: class:be ...

  8. Logback.xml 文件    配置

    2019独角兽企业重金招聘Python工程师标准>>> Logback.xml 文件    配置 <?xml version="1.0" encoding= ...

  9. 从前后端分离到前后端整合的“退步”(二)pom.xml文件配置

    系列文章目录 从前后端分离到前后端整合的"退步"(一)项目结构 从前后端分离到前后端整合的"退步"(二)pom.xml文件配置 Spring Boot + Vu ...

最新文章

  1. Yolo(1)Yolo v1
  2. mysql 给min值取别名_mysql基本命令
  3. WebService大讲堂之Axis2(3):使用services.xml文件发布WebService
  4. R语言应用实战系列(六)-基于R的人工神经网络ANN算法和KNN算法(k-Nearest Neighbour)
  5. Oracle-Oracle数据库结构
  6. windows 命令行创建用户
  7. 关于Git你必须知道的
  8. JAVA虚拟机之垃圾收集与内存分配策略
  9. IntelliJ IDEA 运行 Maven 项目
  10. wxpython使窗口重新显示出来_wxPython实现窗口在任务栏中闪烁
  11. 转:[kipmi0]进程导致系统负载高
  12. 《SEO的艺术(原书第2版)》——3.11 为意识形态影响力开展SEO
  13. 学习官方示例 - TApplication.ExeName
  14. phpfpm内存越来越高_DDR5内存规范发布
  15. C#设计模式---迭代器模式(Iterator Pattern)
  16. iOS之正则表达式的使用
  17. c语言万年历的原理,[原创] C语言实现:万年历(1)
  18. Python是个什么鬼,为什么机械设计都要用到他?
  19. 安卓之旅第七站--实战演练之快给小宝宝买装备吧
  20. JZYZOJ 1382 光棍组织 状压dp

热门文章

  1. Java获取正在执行的函数名
  2. 呼叫中心团队管理浅谈
  3. 深入理解C系列:不同类型变量的变量名和内存间的关系
  4. IOS中initWithFrame 和 initWithCoder的区别
  5. camtasia studio 8.2使用技巧集锦
  6. squid反向代理(实现缓存)加速web
  7. Nginx做负载均衡报:nginx: [emerg] could not build the types_hash
  8. ThinkPHP 框架培训资料
  9. 使用vs2005遇到的两个错误!
  10. ElasticSearch配置优先使用自带jdk