Android开发笔记(八)神奇的shape

shape意即形状,是Android中描述规则几何图形的定义,ShapeDrawable其实就是Drawable的一个子类。用好shape,可以让APP页面不再呆板;用好shape,可以节省不小的美工工作量。


shape的定义文件是xml,以shape元素为根节点。根节点下定义了六个节点:corners(圆角)、gradien(渐变)、padding(间隔)、size(尺寸)、solid(填充)、stroke(描边),各节点的属性值主要是各种长宽、半径、角度,以及颜色。这些定义很简单,多用几遍就记住了,不过网上的介绍大多不全,所以博主在下面就详细介绍各节点的属性用法。


  shape(根节点)
android:shape: 字符串类型,图形的形状。为rectangle表示矩形(默认),为oval表示椭圆( 此时corners节点将失效),为line表示直线( 此时必须设置stroke节点,不然会报错),为ring表示圆环。
下面的属性只有在android:shape="ring"时可用:
android:innerRadius: 像素类型,内圆的半径。
android:innerRadiusRatio: 浮点型,以环的宽度比率来表示内圆的半径。例如,如果android:innerRadiusRatio="3",表示内圆半径等于环的宽度(即外圆直径)除以3。如已设置android:innerRadius则不需设置本属性
android:thickness: 像素类型,环的厚度
android:thicknessRatio: 浮点型,以环的宽度比率来表示环的厚度。例如,如果android:thicknessRatio="2",那么环的厚度就等于环的宽度除以2。如已设置android:thickness则不需设置本属性
android:useLevel: 布尔类型,如果当做是LevelListDrawable使用时值为true,否则为false( 一般情况必须设置为false,不然ring无法显示)。


  corners(圆角)
android:bottomLeftRadius: 像素类型,左下圆角的半径
android:bottomRightRadius: 像素类型,右下圆角的半径
android:topLeftRadius: 像素类型,左上圆角的半径
android:topRightRadius: 像素类型,右上圆角的半径
android:radius: 像素类型,圆角半径(若有上面四个圆角半径的定义,则不需要radius定义)
  无corners节点表示没有圆角


  gradien(渐变)
android:angle: 整型,渐变的起始角度。0值时表示时钟的九点位置,其值增大表示往逆时针方向旋转。例如值为90表示时钟六点位置,值为180表示时钟三点位置,值为270表示时钟零点/十二点位置
android:centerX: 浮点型,圆心的X坐标。当android:type="linear"时不可用
android:centerY: 浮点型,圆心的Y坐标。当android:type="linear"时不可用
android:gradientRadius: 整型,渐变的半径。当android:type="radial"时才需要设置该属性
android:centerColor: 颜色类型,渐变的中间颜色
android:startColor: 颜色类型,渐变的起始颜色
android:endColor: 颜色类型,渐变的终止颜色
android:type: 字符串类型,渐变类型。为linear表示线性渐变(默认值),为radial表示放射渐变(起始颜色就是圆心颜色),为sweep表示滚动渐变(即一个线段以某个端点为圆心做360度旋转)
android:useLevel: 布尔类型,设置为true无渐变,false有渐变色。如果要使用LevelListDrawable对象,就要设置为true
  无gradien节点表示没有渐变效果


  padding(间隔)
android:bottom: 像素类型,与下边的间隔
android:left: 像素类型,与左边的间隔
android:right: 像素类型,与右边的间隔
android:top: 像素类型,与上边的间隔
  无padding节点表示四周不设间隔


  size(尺寸)
android:height: 像素类型,图形高度
android:width: 像素类型,图形宽度
  无size节点表示长宽自适应


  solid(填充)
android:color: 颜色类型,内部填充的颜色
  无solid节点表示无填充颜色


  stroke(描边)
android:color: 颜色类型,描边的颜色
android:dashGap: 像素类型,每段虚线之间的间隔
android:dashWidth: 像素类型,每段虚线的宽度
android:width: 像素类型,描边的宽度(厚度)。当dashGap和dashWidth有一个值为0,则描边为实线
  无stroke节点表示描边不存在


实际运用中,常用的就是三个节点:corners(圆角)、solid(填充)、stroke(描边)。shape自身的属性一般不用设置(默认矩形就好了)。

你可能感兴趣的:(android,shape)