android提供了一种可使用配置文件替代图片资源的方法,一些简单的图片可以使用图形配置文件来代替,这样既可以节省空间减少app大小,也可以防止小图拉伸失真。所有一般在app中能够自己使用配置进行配置的图形一般都编写图形文件,而比较复杂的图片才使用图片文件格式。
下面介绍下shape标签的使用:
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
</shape >
首先在drawable文件夹下创建一个xml文件,随意命名,例如shape_test.xml
这个xml文件能被当作一张图片来使用,下面一段代码标示下shape标签及其子标签和作用:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 圆角 -->
<corners
android:radius="9dp"
android:topLeftRadius="2dp"
android:topRightRadius="2dp"
android:bottomLeftRadius="2dp"
android:bottomRightRadius="2dp"/><!-- 设置圆角半径 -->
<!-- 渐变 -->
<gradient
android:startColor="@android:color/white"
android:centerColor="@android:color/black"
android:endColor="@android:color/black"
android:useLevel="true"
android:angle="45"
android:type="radial"
android:centerX="0"
android:centerY="0"
android:gradientRadius="90"/>
<!-- 间隔 -->
<padding
android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp"/><!-- 各方向的间隔 -->
<!-- 大小 -->
<size
android:width="50dp"
android:height="50dp"/><!-- 宽度和高度 -->
<!-- 填充 -->
<solid
android:color="@android:color/white"/><!-- 填充的颜色 -->
<!-- 描边 -->
<stroke
android:width="2dp"
android:color="@android:color/black"
android:dashWidth="1dp"
android:dashGap="2dp"/>
</shape>
shape(图形)
shape图形的根元素
android:shape:定义shape的值,必须是下面的之一:
- “rectangle” 矩阵,这也是默认的shape
- “oval” 椭圆
- “line” 一条水平的直线。这种shape必须使用 元素来定义这条线的宽度
- “ring” 圆环
下面的属性只有当 android:shape=”ring”才使用:
android:innerRadius:内环的半径。一个尺寸值(dip等等)或者一个尺寸资源。
android:innerRadiusRatio:这个值表示内部环的比例,例如,如果innerRadiusRatio = ” 5 “,那么内部的半径等于环的宽度除以5。这个值会被innerRadius重写。 默认值是9。
android:thickness:环的厚度,是一个尺寸值或尺寸的资源。
android:thicknessRatio:厚度的比例。例如,如果thicknessRatio= ” 2 “,然后厚度等于环的宽度除以2。这个值是被innerRadius重写, 默认值是3。
android:useLevel:如果用在 LevelListDrawable里,那么就是true。如果通常不出现则为false。
corners(圆角)
android:radius 指定了所有圆角的圆度,你也可以单独设置每个角的圆度,如:
<corners
android:topLeftRadius="2dp"
android:topRightRadius="2dp"
android:bottomLeftRadius="2dp"
android:bottomRightRadius="2dp"/>
gradient(渐变)
填充颜色的渐变效果
android:angle :渐变的角度。 0 代表从 left 到 right。90 代表bottom到 top。必须是45的倍数,默认为0
android:centerX:渐变中心的相对X坐标,在0到1.0之间。
android:centerY:渐变中心的相对Y坐标,在0到1.0之间。
android:startColor:渐变开始的颜色值。
android:centerColor:渐变中的颜色值。基于startColor和endColor之间。
android:endColor:渐变结束的颜色。
android:gradientRadius:渐变的半径。只有在 android:type=”radial”才使用
android:type:渐变的模式,下面值之一:
“linear” 线形渐变。这也是默认的模式
“radial” 辐射渐变。startColor即辐射中心的颜色
“sweep” 扫描线渐变。
android:useLevel:如果在LevelListDrawable中使用,则为true
padding(间隔)
内容与视图边界的距离
android:left:左边填充距离.
android:top:顶部填充距离.
android:right:右边填充距离.
android:bottom:底部填充距离.
size(大小)
这个shape的大小
android:height:这个shape的高度。
android:width:这个shape的宽度。
solid(填充)
填充这个shape的颜色
android:color:颜色值,十六进制数,或者一个Color资源
stroke(描边)
这个shape使用的描边,当android:shape=”line”的时候,必须设置该元素。
android:width:描边的粗细。
android:color:描边的颜色
android:dashGap:每画一条线就间隔多少。只有当android:dashWidth也设置了才有效。
android:dashWidth:每画一条线的长度。只有当 android:dashGap也设置了才有效。
dashGap和dashWidth设置这条线为虚线,其中dashWidth表示没一段的线宽,dashGap表示之间的间隔