Shape xml文件编写方式
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape=["rectangle" | "oval" | "line" | "ring"] >
<corners
android:radius="integer"
android:topLeftRadius="integer"
android:topRightRadius="integer"
android:bottomLeftRadius="integer"
android:bottomRightRadius="integer" />
<gradient
android:angle="integer"
android:centerX="integer"
android:centerY="integer"
android:centerColor="integer"
android:endColor="color"
android:gradientRadius="integer"
android:startColor="color"
android:type=["linear" | "radial" | "sweep"]
android:useLevel=["true" | "false"] />
<padding
android:left="integer"
android:top="integer"
android:right="integer"
android:bottom="integer" />
<size
android:width="integer"
android:height="integer" />
<solid
android:color="color" />
<stroke
android:width="integer"
android:color="color"
android:dashWidth="integer"
android:dashGap="integer" />
</shape>
< shape>图形属性
-
针对ring这个形状,有5个特殊属性
表示图形的形状。有四个选项:rectangle(矩形),oval(圆形),line(横线),ring(圆环)。默认形状是矩形。line和ring时必须要通过 < stroke >标签来指定线的宽度和颜色信息。
参数 | 介绍 |
---|---|
android:innerRadius | 指圆环的内半径,和android:innerRadiusRatio同时存在时,以android:innerRadius为准; |
android:thickness | 指圆环的厚度,即外半径减去内半径的大小,和android:thicknessRatio同时存在时,以android:thickness为准; |
android:innerRadiusRatio | 内半径占整个Drawable宽度的比例,默认是9,如果为n,那么内半径 = 宽度/n |
android:thicknessRatio | 厚度占整个Drawable宽度的比例,默认是3,如果为n,那么厚度 = 宽度/n |
android:useLevel | 官方文档建议使用false,否则可能无法达到预期显示效果。除非当做LevelListDrawable来使用 |
< corners> 圆角效果
表示shape的四个角的角度,它只适用于矩形shape, 这里的角度指圆角的程度,单位是px,有5个属性:
- android:radius=”integer” 四个角设定相同的角度,优先级比较低,会被其他的四个属性覆盖
android:topLeftRadius=”integer”
android:topRightRadius=”integer”
android:bottomLeftRadius=”integer”
android:bottomRightRadius=”integer”
< gradient> 渐变效果
它与< solid>标签是互相排斥的,gradient表示渐变效果。
属性 | 介绍 |
---|---|
android:angle=”integer” | 渐变的角度,默认是0,其值必须为45的倍数,0表示从左到右,90表示从上到下, |
android:centerX=”integer” | 渐变中心点的横坐标 |
android:centerY=”integer” | 渐变中心点的纵坐标,渐变中心点会影响渐变的具体效果 |
android:centerColor=”integer” | 渐变的中间色 |
android:endColor=”color” | 渐变的结束色 |
android:gradientRadius=”integer” | 渐变的半径 , 仅当android:type=”radial”时有效: |
android:startColor=”color” | 渐变的起始色 |
android:type=”linear\radial\sweep” | 渐变类别,liner(线性渐变),radial(径向渐变),sweep(扫描线渐变) |
android:useLevel=”true\false” | 一般为false,当Drawable作为StateListDrawable使用true |
< solid> 填充色(单一色)
这个标签标示纯色填充,通过android:color=”color”指定shape中的颜色
< stroke> 描边
参数 | 介绍 |
---|---|
android:width=”integer” | 描边的宽度,值越大边缘线就越粗 |
android:color=”color” | 描边的颜色 |
android:dashWidth=”integer” | 虚线的线段宽度 |
android:dashGap=”integer” | 组成虚线的线段之间的间隔,间隔越大则虚线空隙越大 |
注意:如果 android:dashWidth和android:dashGap中有一个为0,那么虚线不能生效。
< padding> 空白
< size> shape的大小
shape作为View背景时,shape会根据View的大小进行拉伸或者缩小。android:width=”integer”和
android:height=”integer” 可以不设置