shape 就是形状,通过它的属性设置来画出一些图形用于控件背景.selector等.
不多说直接进入正题:
一、父节点shape属性值
shape
|--android:dither
|--android:shape
|--rectangle 矩阵(默认)
|--oval 椭圆
|--line 直线(必须有stroke来设置线的宽度)
|--ring 环
注:以下属性只有shape为ring(环)的时候才会使用
|--android:innerRadiusRatio
尺寸。 内环的半径。一个尺寸值(dip等等)或者一个尺寸资源。
|--android:innerRadius
这个值表示内部环的比例,例如,如果android:innerRadiusRatio = "5",那么内部的半径等于环的宽度除以5。 这个值会被android:innerRadius重写。 默认值是9。
|--android:thicknessRatio
尺寸。环的厚度,是一个尺寸值或尺寸的资源。
|--android:thickness
厚度的比例。例如,如果android:thicknessRatio= "2",然后厚度等于环的宽度除以2。这个值是被 android:innerRadius重写, 默认值是3。
|--android:useLevel
如果用在 LevelListDrawable里,那么就是true。如果通常不出现则为false。
二、父节点shape中一共有以下六个子节点分别是:
1)corners 圆角
2)gradient 渐变色
3)solid 填充
4)stroke 描边
5)padding 间隔
6)size 大小
三、每个子节点包含的属性值
1)corners 圆角
1)|--android:radius 半径(会被下面每个特定的圆角半径值所影响)
2)|--android:topLeftRadius 左上半径
3)|--android:topRightRadius 右上半径
4)|--android:bottomLeftRadius 左下半径
5)|--android:bottomRightRadius 右下半径
注:只有shape为rectangle的时候才使用
PS:
1.如果该圆角四个圆角半径都相同的话只需写1)的属性即可否则就用2),3),4),5)来进行设置。
2.如果分别设置上下左右的半径,再设置1)将无效。
2)gradient 渐变色
|--android:startColor 起始颜色
|--android:centerColor 中心颜色
|--android:endColor 结尾颜色
|--android:useLevel 如果要使用LevelListDrawable对象,就要设置为true。设置为true无渐变。false有渐变色
|--android:angle 渐变角度(当angle=0时,渐变色是从左向右。逆时针方向转,当angle=90时为从下往上。以 此类推,但angle必须为45的整数倍)
|--android:type 渐变类型
|--linear 线性渐变(默认)
|--radial 放射性渐变(以startColor为中心)
|--sweep 扫描性渐变
|--android:centerX 渐变中心X点坐标的相对位置(从0到1.0)
|--android:centerY 渐变中心Y点坐标的相对位置(从0到1.0)
|--android:gradientRadius 渐变色半径
3)solid 填充
|--color 填充的颜色
4)stroke 描边(当父节点shape为line时必须设置该子节点)
|-- android:width 边线的宽度(线的粗细程度)
|-- android:color 边线的颜色
以下两个属性是把边线设置成虚线
|-- android:dashWidth 虚线的宽度
|-- android:dashGap 虚线的间距
注:不论android:dashWidth和android:dashGap哪个设置成0dp边线都会是实线
5)padding 间隔
|--android:left
|--android:top
|--android:right
|--android:bottom
PS:没有什么可说的
6)size 大小
|--android:width 宽度
|--android:height 高度
PS:
1.默认情况下,这个shape会缩放到与他所在容器大小成正比。
2.当你在一个ImageView中使用这个shape,你可以使用 android:scaleType="center"来限制这种缩放。
四、使用方法
具体代码就不上传了大家看一下图就明白使用方法了。