此方法可以背景图和Button渐变效果的Button按钮。代码如下:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<!-- 实心 -->
<solid android:color="#ffffff"/>
<!-- 描边 -->
<stroke
android:width="4dp"
android:color="#00ff00" />
<!-- 圆角 -->
<corners
android:radius="1dp" />
<padding
android:left="2dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />

</shape>

solid:实心,就是填充的意思
android:color指定填充的颜色

gradient:渐变
android:startColor和android:endColor分别为起始和结束颜色,ndroid:angle是渐变角度,必须为45的整数倍。
另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。

stroke:描边
android:width="2dp" 描边的宽度,android:color 描边的颜色。
我们还可以把描边弄成虚线的形式,设置方式为:
android:dashWidth="5dp"

android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。

corners:圆角
android:radius为角的弧度,值越大角越圆。
我们还可以把四个角设定成不同的角度,方法为:

<corners

android:topRightRadius="20dp" 右上角

android:bottomLeftRadius="20dp" 右下角

android:topLeftRadius="1dp" 左上角

android:bottomRightRadius="0dp" 左下角

/>

这里有个地方需要注意,bottomLeftRadius是右下角,而不是左下角,这个有点郁闷,不过不影响使用,记得别搞错了就行。
还有网上看到有人说设置成0dp无效,不过我在测试中发现是可以的,我用的是2.2,可能修复了这个问题吧,如果无效的话那就只能设成1dp了。

padding:间隔
这个就不用多说了,XML布局文件中经常用到。

然后设置为背景就可以了。

下面是自定义Button实现几种事件改变button背景色。

<?xml version="1.0" encoding="utf-8"?>

<selector
xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true" >
<shape>

<!-- 渐变 -->
<gradient
android:startColor="#ff8c00"
android:endColor="#FFFFFF"

android:type="radial"
android:gradientRadius="50" />

<!-- 描边 -->

<stroke

android:width="2dp"

android:color="#dcdcdc"

android:dashWidth="5dp"

android:dashGap="3dp" />

<!-- 圆角 -->

<corners

android:radius="2dp" />

<padding

android:left="10dp"

android:top="10dp"

android:right="10dp"

android:bottom="10dp" />

</shape>

</item>

<item android:state_focused="true" >

<shape>

<gradient

android:startColor="#ffc2b7"

android:endColor="#ffc2b7"

android:angle="270" />

<stroke

android:width="2dp"

android:color="#dcdcdc" />

<corners

android:radius="2dp" />

<padding

android:left="10dp"

android:top="10dp"

android:right="10dp"

android:bottom="10dp" />

</shape>

</item>

<item>

<shape>

<solid android:color="#ff9d77"/>

<stroke

android:width="2dp"

android:color="#fad3cf" />

<corners

android:topRightRadius="5dp"

android:bottomLeftRadius="5dp"

android:topLeftRadius="0dp"

android:bottomRightRadius="0dp"

/>

<padding

android:left="10dp"

android:top="10dp"

android:right="10dp"

android:bottom="10dp" />

</shape>

</item>

</selector>

运行效果图如下:





更多相关文章

  1. 仿照利用android系统源码资源文件,修改SeekBar颜色 前景与背景
  2. Android:漫画APP开发笔记之ListView中图片按屏幕宽度缩放
  3. Android 设置EditText光标Curso颜色及粗细
  4. android 中超出屏幕宽度的字符 省略号显示
  5. [转]android颜色对应的xml配置值
  6. Android 字体颜色渐变效果 Span实现
  7. Android ListView(Selector 颜色)
  8. android TextView字体颜色根据焦点点击变化
  9. android获取图片的RGB颜色值

随机推荐

  1. android 游戏引擎libgdx demo cuboc分析
  2. Android(安卓)学习之《第一行代码》第二
  3. Android(安卓)渗透测试学习手册(四)对 Andr
  4. Android(安卓)开发中发送http请求
  5. android中如何利用attrs和styles定义控件
  6. Android(安卓)进程
  7. Android8.0.0-r4系统的启动过程
  8. Nexus One手机战略!
  9. 使用html开发软件界面
  10. Android系统应用程序基本概念解读