<shape>

<!-- 实心 -->

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

<!-- 渐变 -->

<gradient

android:startColor="#ff8c00"

android:endColor="#FFFFFF"

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>

<shape>

<!-- 实心 -->

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

<!-- 渐变 -->

<gradient

android:startColor="#ff8c00"

android:endColor="#FFFFFF"

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>


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为角的弧度,值越大角越圆。
我们还可以把四个角设定成不同的角度,方法为:

Xml代码
<corners

android:topRightRadius="20dp" 右上角

android:bottomLeftRadius="20dp" 右下角

android:topLeftRadius="1dp" 左上角

android:bottomRightRadius="0dp" 左下角

/>

<corners

android:topRightRadius="20dp" 右上角

android:bottomLeftRadius="20dp" 右下角

android:topLeftRadius="1dp" 左上角

android:bottomRightRadius="0dp" 左下角

/>


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

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


大体的就是这样,以下是一个使用的具体示例:用在Selector中作为Button的背景,分别定义了按钮的一般状态、获得焦点状态和按下时的状态,具体代码如下:



Xml代码
<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="TestShapeButton"

android:background="@drawable/button_selector"

/>

<Button

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="TestShapeButton"

android:background="@drawable/button_selector"

/>

复制代码

我们来看看main.xml代码:



Xml代码
<?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>


01.<shape>
02. <!-- 实心 -->
03. <solid android:color="#ff9d77"/>
04. <!-- 渐变 -->
05. <gradient
06. android:startColor="#ff8c00"
07. android:endColor="#FFFFFF"
08. android:angle="270" />
09. <!-- 描边 -->
10. <stroke
11. android:width="2dp"
12. android:color="#dcdcdc" />
13. <!-- 圆角 -->
14. <corners
15. android:radius="2dp" />
16. <padding
17. android:left="10dp"
18. android:top="10dp"
19. android:right="10dp"
20. android:bottom="10dp" />
21.</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为角的弧度,值越大角越圆。
我们还可以把四个角设定成不同的角度,方法为:


复制到剪贴板 XML/HTML代码01.<corners
02.
03. android:topRightRadius="20dp" 右上角
04. android:bottomLeftRadius="20dp" 右下角
05. android:topLeftRadius="1dp" 左上角
06. android:bottomRightRadius="0dp" 左下角
07./>
.

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

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


大体的就是这样,以下是一个使用的具体示例:用在Selector中作为Button的背景,分别定义了按钮的一般状态、获得焦点状态和按下时的状态,具体代码如下:

复制到剪贴板 XML/HTML代码01.main.xml:
02.<Button
03. android:layout_width="wrap_content"
04. android:layout_height="wrap_content"
05. android:text="TestShapeButton"
06. android:background="@drawable/button_selector"
07. />
08.>
.



button_selector.xml:

复制到剪贴板 XML/HTML代码01.<?xml version="1.0" encoding="utf-8"?>
02.<selector
03. xmlns:android="http://schemas.android.com/apk/res/android">
04. <item android:state_pressed="true" >
05. <shape>
06. <!-- 渐变 -->
07. <gradient
08. android:startColor="#ff8c00"
09. android:endColor="#FFFFFF"
10. android:type="radial"
11. android:gradientRadius="50" />
12. <!-- 描边 -->
13. <stroke
14. android:width="2dp"
15. android:color="#dcdcdc"
16. android:dashWidth="5dp"
17. android:dashGap="3dp" />
18. <!-- 圆角 -->
19. <corners
20. android:radius="2dp" />
21. <padding
22. android:left="10dp"
23. android:top="10dp"
24. android:right="10dp"
25. android:bottom="10dp" />
26. </shape>
27. </item>
28. <item android:state_focused="true" >
29. <shape>
30. <gradient
31. android:startColor="#ffc2b7"
32. android:endColor="#ffc2b7"
33. android:angle="270" />
34. <stroke
35. android:width="2dp"
36. android:color="#dcdcdc" />
37. <corners
38. android:radius="2dp" />
39. <padding
40. android:left="10dp"
41. android:top="10dp"
42. android:right="10dp"
43. android:bottom="10dp" />
44. </shape>
45. </item>
46. <item>
47. <shape>
48. <solid android:color="#ff9d77"/>
49. <stroke
50. android:width="2dp"
51. android:color="#fad3cf" />
52. <corners
53. android:topRightRadius="5dp"
54. android:bottomLeftRadius="5dp"
55. android:topLeftRadius="0dp"
56. android:bottomRightRadius="0dp"
57. />
58. <padding
59. android:left="10dp"
60. android:top="10dp"
61. android:right="10dp"
62. android:bottom="10dp" />
63. </shape>
64. </item>
65.</selector>

更多相关文章

  1. android 调用js中的方法
  2. Android截取开机关机事件
  3. android shape用法(xml文件)
  4. Android(安卓)Compatibility zoom dialog 关闭
  5. Android(安卓)Compatibility zoom dialog 关闭
  6. Dealing with bitmap object in android NDK
  7. Android(安卓)图片倒影和setXfermode
  8. android 触发器
  9. Android(安卓)源代码结构

随机推荐

  1. 【Android不太基础】换个思路来监听home
  2. android的crash log
  3. android下载的进度条
  4. 使用Android Studio搭建Android集成开发
  5. android 定时器与Canvas结合使用
  6. Android中文API(95)——SimpleExpandableLi
  7. Android Studio 启动 无缘故报 Error:Cou
  8. 原:Android 命令行手动编译打包详解
  9. 在设置里面增加关闭和打开GPS ,数据流量的
  10. Android Display System