自定义view shape控件的详解
一、形状
shape属性指定基本形状,允许的值有:rectangle(矩形),oval(椭圆),line(线条), ring(环)。默认的值是矩形,下面的代码定义了一个矩形:
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android" >
</shape>
二、颜色渐变 gradient
1/属性:
- startcolor: 起始颜色
- centercolor : 中间色(过渡色)
- endcolor: 结束色
可以允许设置两次渐变
2.渐变角度:
angle: 默认0值为向右;180向左;90自下而上;设置为270自上而下,以此类推。注意:必须是45的倍数。
3.渐变类型:type
type设置渐变类型,默认是linear(线性渐变),如果设置为radial(放射/径向渐变),则必须同时设置gradientRadius属性,该属性指定渐变半径,注意:这个半径并不是Dimension,不接受dp等单位,只能设置数字。此外还可以设置一个比较有意思的方式:sweep(扫描渐变)
centerX、centerY两个属性用于设置渐变的中心点位置,仅当渐变类型为放射渐变时有效,类型为分数或小数,不接受Dimension。默认值是0.5,有效值是0.0~1.0,超出该范围后会看不出渐变效果。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!--纯色填充-->
<solid android:color="#DFE8DF"/>
<!--设置圆角-->
<corners android:bottomLeftRadius="10dp"
android:topLeftRadius="10dp"/>
<!--渐变色-->
<gradient android:startColor="#14EC14"
android:angle="40"
android:centerColor="#4BC64B"
android:endColor="#367143"
android:type="linear"/>
</shape>
三、solid设置纯色填充
只有color这一个属性来进行填充
四、指定尺寸
使用width、height分别设置宽高,类型为Dimension。
注意:Shape文件即使指定了size,默认情况下在使用时也会缩放到其容器的大小。如果在ImageView中使用,可以使用android:scaleType进行缩放的限制。
五、stroke描边
当定义的形状为line(线条)时,该属性为必选项,设置线条的样式。当形状为其他形状时,该元素起描边的作用。
width指定边框的宽度(Dimension),color指定边框颜色,只接受color类型。
我们还可以设置虚线边框:使用dashGap设置虚线之间的间隔,dashWidth设置每根虚线’-‘的长度
仅当这两个属性都设置时虚线效果才生效。