【原文:Android动画机制与使用技巧(五)——Android 5.X SVG 矢量动画机制】
1.<path>标签
<path>标签创建SVG动画,就像是用指令的方式来控制画笔一样。<path>标签支持的指令有以下几种:
- M:即moveto(M x,y),将画笔移动到(x,y)坐标处开始绘制,但未绘制。
- L:即lineto(L x,y),从当前位置画线到指定的(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轴正方向向下。
- 所有指令均可大小写。大写是绝对定位,参照全局坐标系;小写是相对定位,参照父容器坐标系。
- 指令和数据间的空格可以省略。
- 同一指令出现多次可以只用一个
2.SVG常用指令
- M
M指令类似于Android绘图中path类中的moveTo方法,可以理解为从当前点将画笔移动到(x,y)点,但并未发生绘制动作。
- L
M指令类似于Android绘图中path类中的moveTo方法,可以理解为从当前点将画笔移动到(x,y)点,但并未发生绘制动作。
绘制线段的指令,可以理解为从当前点开始绘制线段到(x,y)点,如:L 100,200 。同时,还可以使用“H”、“V” 指令来绘制水平或者垂直的线段。
- A
绘制一段弧线的指令。且弧线不闭合。可以将此弧线理解为某一椭圆上的一段弧线,其7个参数如下。
- Rx,Ry 指的是所在椭圆的X轴半径和Y轴半径。
- XRotation 指的是椭圆的X轴与水平方向顺时针方向的夹角,也可以理解为一个水平椭圆绕中心点顺时针旋转XRotation的角度。
- Flag1 指的是大角度弧线还是小角度弧线,1表示大角度,0表示小角度,只有这两个值。
- Flag2 指的是从起点到终点是顺时针还是逆时针。1表示顺时针,0表示逆时针。
- X,Y 指的是终点坐标。
例如:A 25,25 0 1,0 50,0;他表示半径是25,不旋转,大角度,逆时针,终点坐标是(50,0)
绘制一段弧线的指令。且弧线不闭合。可以将此弧线理解为某一椭圆上的一段弧线,其7个参数如下。
- Rx,Ry 指的是所在椭圆的X轴半径和Y轴半径。
- XRotation 指的是椭圆的X轴与水平方向顺时针方向的夹角,也可以理解为一个水平椭圆绕中心点顺时针旋转XRotation的角度。
- Flag1 指的是大角度弧线还是小角度弧线,1表示大角度,0表示小角度,只有这两个值。
- Flag2 指的是从起点到终点是顺时针还是逆时针。1表示顺时针,0表示逆时针。
- X,Y 指的是终点坐标。