在Android开发中,可以使用矢量图来代替一些小图标,下面一起了解常用命令,最后用这些命令画出微信图标。
这篇文章也可以在这里看到。
命令
表格中,大写命令代表绝对位置,小写命令代表相对位置(相对位置就是以前一个坐标为原点,绝对位置永远以(0, 0)为原点)
参数中的 + 代表至少要有一对参数
参数和参数之间可以用逗号分割,也可以用空格分隔
命令 | 名称 | 参数 | 描述 |
---|---|---|---|
M/m | moveto | (xy)+ | 在(x,y)坐标处开始一个新的子路径 |
Z/z | closepath | 无 | 从当前点绘制一条直线到当前子路径到初始点来关闭当前子路径 |
L/l | lineTo | (xy)+ | 从当前点绘制一条直线到坐标(x, y) |
H/h | 水平线 | (x)+ | 从当前点(cx, cy)绘制一条水平线到(x, cy) |
V/v | 垂直线 | (y)+ | 从当前点(cx, cy)绘制一条水平线到(cx, y) |
A/a | 椭圆弧 | (rx ry x-axis-rotation large-arc-flag sweep-flag x y)+ | 从当前点到(x, y)绘制一个椭圆弧 |
C/c | curveto | (x1 y1 x2 y2 x y)+ | 使用(x1,y1)作为曲线开始处的控制点,(x2,y2)作为曲线末端的控制点,绘制从当前点到(x,y)的三次贝塞尔曲线 |
S/s | shorthand/smooth curveto | (x2 y2 x y)+ | 绘制从当前点到(x,y)的三次贝塞尔曲线 |
Q/q | quadratic bezier curveto | (x1 y1 x y)+ | 使用x1 y1作为控制点,绘制从当前点到x y到二次贝塞尔曲线 |
T/t | shorthand/smooth quadratic bezier curveto | (x y)+ | 绘制从当前带你到x y到二次贝塞尔曲线 |
详细介绍请参考官方文档,地址
https://www.w3.org/TR/SVG11/paths.html#PathData
详解
代码模板
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="100dp"
android:height="100dp"
android:viewportHeight="100.0"
android:viewportWidth="100.0">
<path
android:pathData=""
android:strokeColor="#0077e6"
android:strokeWidth="0.3" />
</vector>
M/m
M/m命令表示建立一个新的当前点,可以理解为把笔刷移动到指定坐标,准备开始绘图。
需要注意的有:
1. M命令后边需要有其他命令(除 Z 以外)才可以看到效果,下边的代码会绘制一条从(5, 5)到(5, 10)的直线。
<path
android:pathData="M5,5 L5,10"
android:strokeColor="#0077e6"
android:strokeWidth="0.3" />
2.如果后边没有其他命令而且不止一个坐标,则会被视为隐式L命令。下边的代码去掉了L,但是效果跟加上L是一样的。
<path
android:pathData="M5,5 5,10"
android:strokeColor="#0077e6"
android:strokeWidth="0.3" />