Android提供的控件外观实在不怎么好看,比如一个Button,一个EditText。那么我们可以自定义这些控件的背景来达到美观的效果。
常用的方法就是利用shape,shape听起来是用来改变形状的,它不但可以改变形状,还可以改变好多东西。
下面就开始写一个shape文件吧
我们右击drawable选择new一个Drawable resource file,我们会看到它第二行默认为select,我们改成shape,写好名字后点确定,这样就完成了一个shape文件的创建,我们打开这个文件可以看到文件里面只有shape一个根标签。我们会陆续往里面添加其他标签。
这里先提到shape标签的一个属性:

android:shape=”“

这个属性可以设置控件的形状,他有四个取值:

line 线形 
 oval 圆形 
 rectandle 矩形 
 ring 环形

这个属性也可以不设置,不设置就会是默认形状
接下来介绍shape标签里面可以放置的子标签

当android:shape=”rectangle”或默认形状时有5个子标签可用:

solid 设置填充颜色 
 padding 设置内容与边界的内边距 
 gradient 设置渐变颜色 
 corners 设置圆角 
 stroke 设置边框
  1. solid 设置填充色 该标签只有一个属性
  • android:color 设置颜色
  1. padding 设置内容与边界的内边距,可分别设置左右上下距离,有四个属性
• android:left 左边距
• android:right 右边距
• android:top 上边距
• android:bottom 下边距
  1. gradient 设置渐变颜色,这个标签属性比较多
  • android:type 设置渐变类型
    取值有如下三个
    line 线性渐变
    radial 放射性渐变
    sweep 扫描渐变
• android:startColor 设置渐变开始的颜色
• android:endColor 设置渐变结束的颜色
• android:centerColor 设置渐变中间的颜色
• android:angle 渐变的角度,线性渐变时才有效,必须是45的倍数,0表示从左到右,90表示从下到上
• android:centerX 渐变中心的相对X坐标,放射渐变时才有效,在0.0到1.0之间,默认为0.5,表示在正中间
• android:centerY 渐变中心的相对X坐标,放射渐变时才有效,在0.0到1.0之间,默认为0.5,表示在正中间
• android:gradientRadius 渐变的半径,只有渐变类型为radial时才使用
• android:useLevel 如果为true,则可在LevelListDrawable中使用
  1. corners 设置圆角,可用属性有5个
• android:radius 圆角半径,会被下面每个特定的圆角属性重写
• android:topLeftRadius 左上角的半径
• android:topRightRadius 右上角的半径
• android:bottomLeftRadius 左下角的半径
• android:bottomRightRadius 右下角的半径
  1. stroke 设置边框,有4个可用属性
• android:color 描边的颜色
• android:width 描边的宽度
• android:dashWidth 设置虚线时的横线长度
• android:dashGap 设置虚线时的横线之间的距离

当android:shape=”oval”时有5个子标签可用:

solid 设置填充颜色 
 padding 设置内容与边界的内边距 
 gradient 设置渐变颜色 
 stroke 设置边框 
 size 设置形状大小

这里新出来了一个标签:
size 设置形状大小,有两个属性可用
* android:width 设置宽度
* android:height 设置高度

当android:shape=”line”时有2个子标签可用:

stroke 设置边框 
 size 设置形状大小

当android:shape=”ring”时就不止有子标签可以用了,还有一些shape根标签的属性可以用,我们先看看这些属性:

1. android:innerRadius 内环的半径
2. android:innerRadiusRatio 浮点型,以环的宽度比率来表示内环的半径,默认为3,表示内环半径为环的宽度除以3,该值会被android:innerRadius覆盖
3. android:thickness 环的厚度
4. android:thicknessRatio 浮点型,以环的宽度比率来表示环的厚度,默认为9,表示环的厚度为环的宽度除以9,该值会被android:thickness覆盖
5. android:useLevel 一般为false,否则可能环形无法显示,只有作为LevelListDrawable使用时才设为true

可用子标签:

solid 设置填充颜色 
 gradient 设置渐变颜色 
 stroke 设置边框

好了,这些就是我知道的shpae的用法了,以后学到更多的时候还会过来更新~