在Android开发过程中,经常需要改变控件的默认样式, 那么通常会使用多个图片来解决。不过这种方式可能需要多个图片,比如一个按钮,需要点击时的式样图片,默认的式样图片,然后在写一个selector的xml文件放在drawable文件夹中,但是 这样drawable中的内容就非常多,就容易使apk变大。
那么自定义图形shape就可解决这一问题, Android上自定义图形shape支持以下几种属性gradient、stroke、corners、padding、 solid等。
- < shape >
- <!-- 实心 -->
- < solid android:color = "#ff9d77" />
- <!-- 渐变 -->
- < gradient
- android:startColor = "#ff8c00"
- android:endColor = "#FFFFFF"
- android:angle = "270" />
- <!-- 描边 -->
- < stroke
- android:width = "2dp"
- android:color = "#dcdcdc" />
- <!-- 圆角 -->
- < corners
- android:radius = "2dp" />
- < padding
- android:left = "10dp"
- android:top = "10dp"
- android:right = "10dp"
- android:bottom = "10dp" />
- </ shape >
android:color 指定填充的颜色
gradient : 渐变
android:startColor 和 android:endColor 分别为起始和结束颜色
android:angle 是渐变角度, 必须为45的整数倍 。
另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。
stroke : 描边
android:width ="2dp" 描边的宽度, android:color 描边的颜色。
我们还可以把描边弄成虚线的形式,设置方式为:
android:dashWidth="5dp"
android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。
corners :圆角
android:radius 为角的弧度,值越大角越圆。