转自:http://hi.baidu.com/whyspai/item/d21f8638a7d16785c3cf29f2
在Android开发过程中,经常会针对一些控件使用渐变的处理,一种方式是采用调用不同的图片来实现,还有一种则是自定义图形shape来实现.
自定义图形shape,支持以下几种属性shape、gradient、stroke、corners、padding、solid等。
以下为程序示例:
-
<shape
-
xmlns:android="http://schemas.android.com/apk/res/android"
-
<gradientandroid:startColor="#FFFF0000"
-
android:endColor="#80FF00FF"
-
android:angle="100"/>
-
<paddingandroid:left="40dp"
-
android:top="15dp"android:right="6dp"
-
android:bottom="6dp"/>
-
<cornersandroid:radius="6dp"/>
-
</shape>
简单介绍下shape的各子属性:
gradient ---- 对应颜色渐变。 startcolor、endcolor渐变颜色的起至颜色值, android:angle 是指从哪个角度开始变,必须为45的整数倍,另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半android:gradientRadius="50"。
solid ---- 实心,就是填充的意思,android:color指定填充的颜色
stroke ---- 描边,android:width="2dp"描边的宽度android:color描边的颜色。我们还可以把描边弄成虚线的形式,
设置方式为:android:dashWidth="5dp" android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。
corners ---- 圆角。android:radius为角的弧度,值越大角越圆。我们还可以把四个角设定成不同的角度,方法为:
-
<corners
-
-
android:topRightRadius="10dp" 右上角
-
android:bottomLeftRadius="10dp" 右下角
-
android:topLeftRadius="0dp" 左上角
-
android:bottomRightRadius="1dp" 左下角
-
/>
这里有个地方需要注意,bottomLeftRadius是右下角,而不是左下角。
padding ---- 定义内容离边界的距离。 与android:padding_left、android:padding_right一样的功能
使用sharp时在drawable中定义针对shape的xml文件并实现,在调用时跟使用图片类似。