24.3Vector语法简介
Android以一种简化的方式对SVG进行了兼容,这种方式就是通过使用它的Path标签,通过Path标签,几乎可以实现SVG中的其它所有标签。
Path指令解析如下所示:
支持的指令:
M =moveto(M X,Y) :将画笔移动到指定的坐标位置
L =lineto(L X,Y) :画直线到指定的坐标位置
H =horizontal lineto(H X):画水平线到指定的X坐标位置
V =vertical lineto(V Y):画垂直线到指定的Y坐标位置
C =curveto(C X1,Y1,X2,Y2,ENDX,ENDY):三次贝赛曲线
S =smooth curveto(S X2,Y2,ENDX,ENDY)
Q =quadratic Belzier curve(Q X,Y,ENDX,ENDY):二次贝赛曲线
T =smooth quadratic Belzier curveto(T ENDX,ENDY):映射
A =elliptical Arc(A RX,RY,XROTATION,FLAG1,FLAG2,X,Y):弧线
Z =closepath():关闭路径
使用原则:
坐标轴为以(0,0)为中心,X轴水平向右,Y轴水平向下。
所有指令大小写均可。大写绝对定位,参照全局坐标系;小写相对定位,参照父容器坐标系。
指令和数据间的空格可以省略。
同一指令出现多次可以只用一个。
注意,'M'处理时,只是移动了画笔, 没有画任何东西。 它也可以在后面给出上同时绘制不连续线。
一个基本的Vector图像,实际上也是一个xml文件,如下所示:
<vectorxmlns:android="http://schemas.android.com/apk/res/android"
android:autoMirrored="true"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0"
android:width="24dp">
<path
android:fillColor="#FF000000"
android:pathData=
"M11,9h2L13,6h3L16,4h-3L13,1h-2v3L8,4v2h3v3zM7,18c-1.1,0-1.99,0.9 -1.99,2S5.9,22 7,22s2,-0.9 2,-2 -0.9,-2 -2,-2zM17,18c-1.1,0 -1.99,0.9-1.99,2s0.89,2 1.99,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM7.17,14.75l0.03,-0.120.9,-1.63h7.45c0.75,0 1.41,-0.41 1.75,-1.03l3.86,-7.01L19.42,4h-0.01l-1.1,2-2.76,5L8.53,11l-0.13,-0.27L6.16,6l-0.95,-2 -0.94,-2L1,2v2h2l3.6,7.59-1.35,2.45c-0.16,0.28 -0.25,0.61 -0.25,0.96 0,1.1 0.9,22,2h12v-2L7.42,15c-0.13,0 -0.25,-0.11 -0.25,-0.25z"/>
</vector>
显示如图所示:
其中:
android:width\ android:height:定义图片的宽高
android:viewportHeight\ android:viewportWidth:定义图像被划分的比例大小, 例如例子中的24.0,即把24dp大小的图像划分成24份,后面Path标签中的坐标,就全部使用的是这里划分后的坐标系统。这样做有一个非常好的作用,就是将图像大小与图像分离,后面可以随意修改图像大小,而不需要修改PathData中的坐标。
参考:http://blog.csdn.net/qq_15545283/article/details/51472458
http://blog.csdn.net/eclipsexys/article/details/51838119