Android Studio:Vector Asset 语法详解

Vector语法简介

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轴水平向下

所有指令大小写均可。大写绝对定位,参照全局坐标系;小写相对定位,参照前已指令x,y的值。例如:M 5,21 l7,-3 7,3 可以解释为将画笔移动到(5,21)坐标,然后画连续画两条线,一条从(5,21)画到(5+7,21-3)即(12,18),然后继续画另一条至(12+7,18+3)即(19,21),画出的效果是向上的折线

指令和数据间的空格可以省略

同一指令出现多次可以只用一个。

 

注意,'M'处理时,只是移动了画笔, 没有画任何东西。 它也可以在后面给出上同时绘制不连续线。

示例:

例如如下的vector

这里需要解释下这里的几个标签:

  • android:width \ android:height:定义图片的宽高
  • android:viewportHeight \ android:viewportWidth:定义图像被划分的比例大小,例如例子中的24,即把24dp大小的图像划分成24份(可以按照需求分割成任何份),后面Path标签中的坐标,就全部使用的是这里划分后的坐标系统。

这样做有一个非常好的作用,就是将图像大小与图像分离,后面可以随意修改图像大小,而不需要修改PathData中的坐标。

  • android:fillColor:PathData中的这些属性就不详细讲了,与Canvas绘图的属性基本类似。

 

其语法可以如下拆解:

android:pathData="

M17,3(画笔移动到 x:17 y:3)

H7 (从x:17 y:3水平画线到 x:7 y:3)

c-1.1,0 -1.99,0.9 -1.99,2 (从x:7 y:3出发画弧线到 x:5,y:5)

L5,21 (从x:5 y:5 处开始画线到 x:5 y:21)

l7,-3 7,3 (从x:5 y:21处开始先画线到 x:12 y:18,再从x:12 y:18处开始画线到 x:19 y:21)

V5 (从x:19 y:21处开始垂直画线到x:19 y:5)

c0,-1.1 -0.9,-2 -2,-2 :(从x:19 y:5处开始画弧线到x:17 y:3)

z" (关闭路径)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值