Android开发:自定义图形shape

转自:http://hi.baidu.com/whyspai/item/d21f8638a7d16785c3cf29f2

在Android开发过程中,经常会针对一些控件使用渐变的处理,一种方式是采用调用不同的图片来实现,还有一种则是自定义图形shape来实现.

自定义图形shape,支持以下几种属性shape、gradient、stroke、corners、padding、solid等。

以下为程序示例:

  1. <shape 

  2.     xmlns:android="http://schemas.android.com/apk/res/android" 

  3.     <gradientandroid:startColor="#FFFF0000" 

  4.         android:endColor="#80FF00FF" 

  5.         android:angle="100"/> 

  6.     <paddingandroid:left="40dp" 

  7.         android:top="15dp"android:right="6dp" 

  8.         android:bottom="6dp"/> 

  9.     <cornersandroid:radius="6dp"/> 

  10. </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文件并实现,在调用时跟使用图片类似。

 

posted @ 2013-11-03 13:16  海之涯2008  阅读(850)  评论(0编辑  收藏  举报