在Android开发中,避免不了要使用图片的情况,但图片又是很占内存的,为了节省内存,减小apk的体积,我们对一些简单的图片使用xml文件进行定义。
使用xml可以定义哪些drawable
一些简单的规则几何图形可以使用xml定义,例如:直线、圆、矩形、圆环。android:shape 属性有四个值,分别是:
line —— 线
rectangle —— 矩形
oval —— 圆
ring —— 圆环
shape标签里所具有的几个子标签及其具有的属性。
一、solid 标签
solid标签——定义了图形内部的填充色,只有一个颜色属性。使用如下:
<solid
android:color="@color/colorAccent"/>
二、size 标签
size标签——定义了图形的大小,有宽高两个属性。使用如下:
<size
android:width="50px"
android:height="50px" />
三、padding 标签
padding标签——定义了图形的内边距,使用如下:
<padding
android:top="10px"
android:bottom="10px"
android:left="10px"
android:right="10px" />
四、stroke 标签
stroke 标签——定义了图形的描边,有线宽、虚实、和颜色几个属性,使用如下:
<stroke
android:width="5px"
android:dashGap="10px"
android:dashWidth="10px"
android:color="@color/colorAccent"/>
<!-- dashGap 和 dashWidth的值不为0时,线为虚线;任一值为0时,线为实线。 -->
<!-- dashGap : 两个破折号之间的间隔长度 -->
<!-- dashWidth : 每一段破折号的长度 -->
五、corners 标签
corners 标签——定义了矩形图形的圆角半径,使用如下:
<corners
android:radius="10px"
android:topLeftRadius="10px"
android:topRightRadius="10px"
android:bottomLeftRadius="10px"
android:bottomRightRadius="10px"/>
<!-- radius : 定义全部的圆角半径,和其他四个属性不同时使用。-->
六、gradient 标签
gradient 标签—— 定义了图形的渐变色,下面介绍几个属性标签 :
1、android:type : 渐变类型,值有三个,分别 linear —— 线性渐变;radial —— 放射性渐变;sweep —— 扫描式渐变。没有定义时默认值是linear。
2、android:angle : 渐变的角度,值必须是45的倍数。
3、android:gradientRadius : 渐变的半径,只有当渐变类型为radial时才能使用。
4、android:centerX 和 android:centerY : 渐变中心X和渐变中心Y的相对位置,值为0~1。
5、android:startColor、android:centerColor 和 android:endColor : 定义渐变颜色。
使用如下:
<gradient
android:startColor="@color/colorAccent"
android:centerColor="@color/colorLightBlue"
android:endColor="@color/colorPrimary"
android:gradientRadius="30px"
android:angle="45"
android:centerX="0.6"
android:centerY="0.3"/>
单独使用或者组合使用上述标签即可定义drawable图形。这里着重说明一下圆环的定义,定义圆环时有几个特有属性:
android:innerRadius :内环的半径
android:thickness : 环的厚度
android:innerRadiusRatio : 浮点型,以环的宽度比率来表示内环的半径
android:thicknessRatio : 浮点型,以环的宽度比率来表示环的厚度
android:useLevel : 如果当做是LevelListDrawable使用时值为true,否则为false。这里一定要加上useLevel属性并定义为false,不然没有效果。
android:innerRadiusRatio 和 android:thicknessRatio 的意思不是很理解,但想要的效果通过android:innerRadius 和 android:thickness 也能实现。所有个人使用的不多。定义圆环时使用如下:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadiusRatio="4"
android:thicknessRatio="9"
android:innerRadius="10px"
android:thickness="10px"
android:useLevel="false">
<solid
android:color="@color/colorAccent"/>
</shape>
至此,shape定义drawable图形介绍完毕。
网友评论