Android shape的应用
Shape
Shepe的创建res->drawable->new->Drawableresource file
形状图形的定义文件以shape元素为根节点。根节点下定义了6个节点:
corners(圆角)
gradien(渐变)
padding(间隔)
size(尺寸)
solid(填充)
stroke(描边)
各节点的属性主要是长宽、半径、角度以及颜色。下面是形状图形各个节点和属性的简单说明
1. shape
shape是XML文件的根节点,用来描述该形状图形是那种几何图形,下面是shape节点的常用属性说明
*shape : 字符串类型,图形的形状。形状类型的取值说明见下表
形状类型 |
说明 |
Rectangle |
矩形,默认值 |
Oval |
椭圆,此时corners节点会失效 |
Line |
直线,此时必须设置stroke节点,不然会报错 |
Ring |
圆环 |
2. corners
corners是shape的下级节点,用来描述4个圆角的规格定义,若无corners节点,则表示没有圆角。下面是corners节点的常用属性说明
l bottomLeftRadius 像素类型,左下圆角的半径
l bottomRightRadius 像素类型,右下圆角的半径
l topLeftRadius 像素类型,左上圆角的半径
l topRightRadius 像素类型,右上圆角的半径
l radius 像素类型,圆角半径(若有上面4个圆角半径的定义,则不需要radius定义)
3. gradien
gradien是shape的下级节点,用来描述形状内部的颜色渐变定义,若无gradien节点,则表示没有渐变效果,下面是higradien节点的常用属性说明
l angle 整型,渐变的起始角度,为0时表示始终的9点位置,值增大表示往逆时针方向旋转,
l type 字符串类型渐变类型,渐变类型的取值说明见下表
渐变类型 |
说明 |
Linear |
线性渐变,默认值 |
Radial |
放射渐变,起始颜色就是圆心颜色 |
Sweep |
滚动渐变,级一个线段以某个端点为圆心做360度旋转 |
l centerX 浮点型,圆心的X坐标,当android:type=”linear”时不可用
l centerY 浮点型,圆心的Y坐标,当android:type=”linear”时不可用
l gradientRadius 整型,渐变的半径,当android:type=”linear”时才需要设置该属性
l centerColor 颜色类型,渐变的中间颜色
l startColor 颜色类型,渐变的起始颜色
l endColor 颜色类型,渐变的终止颜色
l useLevel 布尔类型,设置为true无渐变色,false有渐变色
4. padding
padding是shape的下级节点,用来描述形状图形与周围视图的间隔大小,若无padding节点,则表示四周不设间隔,下面是padding节点的常用属性说明
l bottom 像素类型,与下边的间隔
l left 像素类型,与左边的间隔
l right 像素类型,与右边的间隔
l top 像素类型,与上边的间隔
5. size
size是shape的下级节点,用来描述形状图形的尺寸大小(宽度和高度),若无size节点,则表示宽高自适应,下面是size节点的朝那个用属性说明
l height 像素类型,图形高度
l width 像素类型,图形高度
6. solid
solid是shape的下级节点,用来描述形状图形内部的填充色彩,若无solid加点,则表示无填充颜色,下面是solid节点的常用属性说明
l color 颜色类型,内部填充的颜色
7. stroke
stroke是shape的下级节点,用来描述形状图形四周边线的规格定义,若无stroke节点,则表示不存在描边,下面是stroke节点的属性说明
l color 颜色类型,描边的颜色
l dashGap 像素类型,每段虚线之间的间隔
l dashWidth 像素类型,每段虚线的宽度
l width 像素类型,描边的厚度,若dashGap和dashWidth有一个值为0,则描边为实线
在实际开发中,常用的有3个节点:corners(圆角)、solid(填充)、stroke(描边),shape根节点的属性一般不用设置(默认矩形就好了),下面是shape图形的XML代码
创建Shepe res->drawable->new->Drawable resource file –>shape_radius.xml
<?xml version="1.0"encoding="utf-8"?>
<shapexmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="1dp"
android:color="#CB2424"/>
<corners
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"
android:topLeftRadius="10dp"
android:topRightRadius="10dp"/>
</shape>
定义的shape图形一般作为组件的背景使用:android:background="@drawable/ shape_radius "
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@drawable/shape_radius"
android:text="百度(纳斯达克:BIDU),全球最大的中文搜索引擎、最大的中文网站。1999年底,身在美国硅谷的李彦宏看到了中国互联网及中文搜索引擎服务的巨大发展潜力,抱着技术改变世界的梦想,他毅然辞掉硅谷的高薪工作,携搜索引擎专利技术,于 2000年1月1日在中关村创建了百度公司。"
android:textSize="30sp" />