这里我举例如何使用selector,layer-list完成button背景的层叠组合,从而有不同情形下不同效果

button_ctrl.xml中选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/button_highlight_ctrl" />
<item android:drawable="@drawable/button_normal_ctrl" />
</selector>

button_highlight_ctrl.xml中两层图

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/button_highlight_back"
android:top="2dip"
android:right="2dip"
android:bottom="2dip"
android:left="2dip"/>
<item
android:drawable="@drawable/button_highlight_fore"
android:top="2dip"
android:right="2dip"
android:bottom="2dip"
android:left="2dip"/>
</layer-list>

button_highlight_back.xml中完成背景颜色的渐变

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="4dip"/>
<gradient
android:type="linear"
android:angle="270"
android:startColor="@color/highlight_button_start_color"
android:centerColor="@color/highlight_button_middle_color"
android:endColor="@color/highlight_button_end_color"/>
</shape>

button_highlight_fore是一张前景图片,即按下时的顶部阴影:

至此,已完成高亮button的制作,接下来是普通button

button_normal_ctrl.xml中两层图

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/button_normal_back"
android:top="2dip"
android:right="2dip"
android:bottom="2dip"
android:left="2dip"/>
<item
android:drawable="@drawable/button_normal_fore"
android:top="2dip"
android:right="2dip"
android:bottom="1dip"
android:left="2dip"/>
</layer-list>

button_normal_back.xml和button_normal_fore处理类似高亮,不贴代码了

下面是运行效果截图:

普通  高亮

当然前面不一定写字符,可以是一张图片。总之变化可以多样,核心思想是一致的。

转载于:https://www.cnblogs.com/nicklezhang/archive/2011/01/22/1941911.html

android button背景随心搭配相关推荐

  1. android Button背景高度被拉伸问题--解决方案

    android Button背景高度被拉伸问题--解决方案 参考文章: (1)android Button背景高度被拉伸问题--解决方案 (2)https://www.cnblogs.com/slys ...

  2. android button背景图片自适应,Android开发之给你的Button加个背景

    在Android应用中,绝大部分情况下,按钮都有按下变色的效果,这种效果主要都是借助于Android里面的 StateListDrawable来实现的,它可以设置多种状态,并分别为每种状态设置相应的d ...

  3. Android button背景设置透明色和样式

    android:background="@android:color/transparent"<color name="transparent"># ...

  4. android button背景图片不拉伸的一种处理方法

    一般来说UI给的图片比例应该和控件是正好符合的,但是实际操作过程中会发现可能不符合的情况,比例不对直接设置background的话background会被拉伸,这个时候一般来说如果能像ImageVie ...

  5. android button背景图片变形,按钮背景图像拉伸(wrap_content或dp使用)

    我设置背景图像到我的自定义按钮.我为我的应用做了一个截图,并提到当我使用"wrap_content"作为按钮的宽度和高度时,该按钮被拉伸.当我在dp中修复大小时,它会显示很好(例如 ...

  6. android点击灰色背景图片,android button按键失去焦点和点击后改变背景图片

    android button按键得到焦点和点击后改变背景图片 我也接受android不久,今天来给同学们分享一下button得到焦点和点击后改变背景图片,其实很简单就是两个事件setOnFocusCh ...

  7. Android Studio Button背景颜色无法修改

    关于Android Studio Button背景无法修改,一直呈现亮紫色 作为安卓初学者,发现Button的背景颜色无法修改,也没法链接到drawable的样式xml文件,前前后后折腾了好久,查阅了 ...

  8. android checkBox背景样式及用颜色值实现button点击效果

    1  使用颜色值(不使用图片)来实现按钮的点击效果: color.xml  <color name="head_color">#836FFF</color> ...

  9. android开发设置Button背景颜色

    1 :在drawable里新建一个setbar_bg.xml,代码为 <?xml version="1.0" encoding="utf-8"?> ...

最新文章

  1. keras module 'tensorflow' has no attribute 'placeholder'
  2. 飞在空中的仓库再配合无人机送货,沃尔玛新专利厉害了
  3. folderutils.java_值得分享的超全文件工具类FileUtil
  4. AI理论知识整理(9)-级数与数列收敛
  5. OpenCV—形态学运算定义与实现
  6. 《数据管理能力成熟度模型》标准宣贯会在上海召开
  7. 纯js上传文件 很好用
  8. 简单事务:.NET Core应用程序的微服务示例体系结构
  9. VC知识库文档中心嵌入开发WinCE 里面不少写的很好的WinCE的文章
  10. idea 格式化vue代码,检查语法
  11. Zigbee和wifi信道设置避免同频干扰
  12. (超详细笔记整理)动力节点_老杜 | JavaSE进阶 【P486之后】
  13. 电脑右下角,电脑右下角的小喇叭不见了怎么办【解决方法】
  14. 学计算机语言从何开始,小孩学编程从哪开始
  15. 地面分辨率,空间分辨率(GSD为地面采样间隔)
  16. 建筑市场监管平台解密
  17. Linux 安装添加新的字体
  18. 校园网络时钟系统(标准化考场)建设方案
  19. 论文学习——基于混合GA优化LSTM的中小流域流量预测研究
  20. 变味的校园App:网游色情内容泛滥,K12成重灾区

热门文章

  1. windows下scrapy安装问题,以及Twisted安装报错(error: Microsoft Visual C++ 14.0 is required.)完美解决办法...
  2. 【poj3208-Apocalypse Someday】数位DP
  3. Java(CallableStatement)调用Oracle存储过程返回结果集(ResultSet)
  4. 深入理解WMS(三):剖析Activity,View,Window之间的关系
  5. Binder相关面试总结(一):为什么Android要采用Binder作为IPC机制?
  6. 【剑指offer-Java版】37两个链表的第一个公共结点
  7. Android 虚线实现绘制 - DashPathEffect
  8. [java语言]——InetAddress类的getByName()方法
  9. Android10.0 Binder通信原理(一)Binder、HwBinder、VndBinder概要
  10. java里css查找快捷键_CSS入门2—元素快捷键