- 前言
- ShapeDrawable的结构
- shape(形状)
- corners(表示shape的四个圆角的角度,只适用于矩形)
- gradient(渐变效果,与
<
solid>
纯色填充是互相排斥的) - padding(与四周空白的距离)
- size(图形的固有大小,非最终大小)
- solid(纯色填充)
- stroke(描边)
前言
使用shape标签定义的 Drawable,可以理解为颜色来构造的图,他可以很方便得到一个矩形,圆,椭圆,圆环,很容易维护和修改,实现虚线、实线,矩形 有/无边框,虚线边框,实线边框,有/无填充颜色,矩形圆角,渐变(线性渐变,径向渐变,扫描渐变)。他的实体类类型对应是GradientDrawable。
各种效果,请移步博客:【Android XML shape 标签使用详解】
免写shape.xml,通过标签直接生成shape:【github:BackgroundLibrary】
ShapeDrawable的结构
根节点<
shape>
,子节点<
corners>
、<
gradient>
、<
padding>
、<
size>
、<
solid>
、<
stroke>
<?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:topLeftRaidus="integer"
android:topRightRaidus="integer"
android:bottomLeftRaidus="integer"
android:bottomRightRaidus="integer" />
<gradient
android:angle="integer"
android:centerX="integer"
android:centerY="integer"
android:centerColor="color"
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
- line ==> 线(必须通过<stroke>标签来指定线的宽度和颜色等信息。)
- rectangle ==> 矩形(包括圆角矩形)
- oval ==> 椭圆,圆
- ring ==> 圆环(必须通过<stroke>标签来指定线的宽度和颜色等信息。)
ring还有五个特殊的属性
corners
表示shape的四个圆角的角度,只适用于矩形。
android:radius
:为四个角同事设定相同的角度。优先级比以下4个属性要低。android:topLeftRadius
:左上角的角度。android:topRightRadius
:右上角的角度。android:bottomLeftRadius
:左下角的角度。android:bottomRightRadius
:右下角的角度。
gradient
渐变效果,与<
solid>
纯色填充是互相排斥的。
android:angle
:渐变的角度。(默认为0。值必须为45的倍数。0表示从左到右,90表示从下到上。)android:centerX
:渐变的中心点的X坐标。android:centerY
:渐变的中心点的Y坐标。android:startColor
:渐变的起始色。android:centerColor
:渐变的中间色。android:endColor
:渐变的结束色。android:gradient
:渐变半径。仅当android:type="radial"时有效。android:useLevel
:一般为false,当Drawable作StateListDrawable时为true。android:type
:渐变的类别。可选值:- linear(线性渐变):默认
- radial(径向渐变):需要配合
android:gradient
属性一起使用。 - sweep(扫描线渐变)
padding
与四周空白的距离(left、top、right、bottom)
size
图形的固有大小,非最终大小。(width
和height
分别设定shape的宽/高)
solid
纯色填充
- color:指定填充的颜色。
stroke
描边
- width:描边的粗细
- color:描边的颜色
- dashWidth:组成虚线的线段的宽度
- dashGap:组成虚线的线段之间的间隔,间隔越大,虚线看起来的空隙越大