一.shape语法
1.文件位置:
res/drawable/filename.xml
这个文件名就是资源ID。
2.资源类型:
这是一个GradientDrawable资源文件。(使用shape定义GradientDrawable的属性)
3.资源引用方式:
在JAVA中:R.drawable.filename
在XML中 :@[package:]drawable/filename
4.语法:<?xml version="1.0"encoding="utf-8"?>
android:color="color" />
5.元素:
这个必须作为根元素。
属性:
xmlns:android
String.定义xml文件的命名空间,必须是"http://schemas.android.com/apk/res/android"。
xmlns:shape
Keyword.定义这个类型的形状,可选值为:ValueDesciptio
"rectangle"矩阵,这也是默认的形状
"oval"椭圆形
"line"一条水平的直线。必须使用 元素来定义这条线的宽度,否则不会
"ring"圆环
下面的属性只有当android:shape="ring"才使用:
android:innerRadius
Dimension. 内环的半径。一个尺寸值(dp)或者一个尺寸资源(dimension resource)。
android:innerRadiusRatio
Float.这个值表示内部环的比例,例如,如果android:innerRadiusRatio = " 5 ",那么内部环的半径等于环的宽度除以5。这个值会被android:innerRadius重写。 默认值是9。
android:thickness
Dimension.环的厚度,是一个尺寸值(dp)或尺寸的资源(dimension resource)。
android:thickne***atio
Float.厚度的比例。例如,如果android:thickne***atio= " 2 ",然后厚度等于环的宽度除以2。这个值会被android:thickness重写, 默认值是3。
android:useLevel
Boolean.如果用在 LevelListDrawable里,那么就是true。如果通常不出现则为false。
为Shape创建一个圆角,只有android:shape="rectangle"才有效果。
属性:
android:radius
Dimension.圆角的半径。会被下面每个特定的圆角属性重写。
android:topLeftRadius
Dimension.左上角半径。
android:topRightRadius
Dimension.右上角半径。
android:bottomLeftRadius
Dimension. 左下角半径。
android:bottomRightRadius
Dimension.右下角半径。
PS:每个圆角半径值都必须大于1,否侧就没有圆角。
指定这个shape的渐变颜色。
属性:
android:angle
Integer.渐变的角度,逆时钟旋转。 0 代表从左到右。90 代表下到上。必须是45的倍数,默认为0。
android:centerX
Float.渐变中心的相对X坐标,值必须在0-1.0之间。
android:centerY
Float.渐变中心的相对Y坐标,值必须在0-1.0之间。
android:startColor
Color.开始的颜色值。
android:centerColor
Color.中间的颜色值。
android:endColor
Color.结束的颜色值。
android:gradientRadius
Float.渐变的半径。只有在 android:type="radial"才有效。
android:useLevel
Boolean.如果在LevelListDrawable中使用,则为true
android:type
Keyword.渐变的模式,可选值为:
ValueDescription
"linear"线形渐变。默认的模式
"radial"辐射渐变。startColor即辐射中心的颜色
"sweep"扫描线渐变。
内容与视图边界的距离
属性:
android:left
Dimension.左边距离.
android:top
Dimension.顶部距离.
android:right
Dimension.右边距离.
android:bottom
Dimension.底部距离.
这个shape的大小。
属性:
android:height
Dimension.这个shape的高度。
android:width
Dimension.这个shape的宽度。
PS:默认情况下,这个shape会缩放到与他所在容器大小成正比。当你在一个ImageView中使用这个shape,你可以使用android:scaleType="center"来限制这种缩放。
用指定的颜色填充整个shape。
ps:渐变的颜色会覆盖填充的颜色
属性:
android:color
Color.颜色值,十六进制数,或者一个Color资源
给shape描边,当android:shape="line"的时候,必须设置改元素。
属性:
android:width
Dimension.笔画的粗细。
android:color
Color.笔画的颜色
android:dashGap
Dimension.每画一条虚线间隔宽度。只有当android:dashWidth也设置了才有效。
android:dashWidth
Dimension.每画一条虚线的长度。只有当 android:dashGap也设置了才有效。
二.示例
1.矩形
<?xml version="1.0"encoding="utf-8"?>
android:type="linear"android:startColor="#FFF000"android:centerColor="#0F0F00"android:endColor="#00F0FF"android:angle="0"android:centerX="0.5"android:centerY="0.5"/>
线性渐变
辐射渐变,辐射渐变必须设置android:gradientRadius,否则没有效果
(这一句可以不用注释)android:endColor="#00F0FF"android:angle="0"android:centerX="0.5"android:centerY="0.5"android:gradientRadius="40dp"/>
扫描渐变
2.椭圆形
修改android:shape="oval"
3.线。只有和有效果,必须设置否则线不会出现。PS:属性可有可无,可以通过的width元素来代替。<?xml version="1.0"encoding="utf-8"?>
4.圆环。
PS: android:innerRadius会覆盖android:innerRadiusRatio;设置内环的半径(内环是空心)
android:thickness会覆盖android:thickne***atio;设置外环的厚度
不明白可以查看上面API
文件名:shape.xml
圆环应用方式: