pathData是Android Vector Drawable中定义图形路径的核心语法,类似SVG的d属性,通过大小写区分绝对/相对坐标命令(如M/m、L/l、C/c等)描述线条、曲线和弧线,支持空格或逗号分隔参数,需注意坐标单位、可读性及视口适配。

pathData 基本结构
格式为:命令字母 + 数值参数(空格或逗号分隔),命令区分大小写:
- 小写字母:表示相对坐标(相对于上一个点)
- 大写字母:表示绝对坐标(相对于画布原点 0,0)
- 常见命令可连写,如
M10,20 L30,40 C50,60 70,80 90,100
常用命令详解
M / m —— 移动到(moveTo),设置新路径起点
例:M100,100 表示从 (100, 100) 开始绘图;m20,30 表示从上一点右移 20、下移 30 的位置开始
L / l —— 直线到(lineTo),画一条直线段
例:L200,100 从当前点画直线到 (200, 100)
H / h —— 水平线到(horizontal line)
只指定 x 坐标,y 不变;H150 表示水平画到 x=150
V / v —— 垂直线到(vertical line)
只指定 y 坐标,x 不变;v-20 表示垂直向上移动 20
C / c —— 三次贝塞尔曲线(cubic Bézier)
格式:C x1,y1 x2,y2 x,y,两个控制点 + 一个终点
例:C50,0 100,50 100,100 从当前点出发,经 (50,0) 和 (100,50) 控制,到达 (100,100)
Q / q —— 二次贝塞尔曲线(quadratic Bézier)
格式:Q x1,y1 x,y,一个控制点 + 一个终点
A / a —— 椭圆弧线(arc)
格式:A rx,ry x-axis-rotation large-arc-flag,sweep-flag x,y
如:A20,20 0 0,1 60,60 表示:x 半径 20、y 半径 20,不旋转,小弧(0),顺时针(1),终点 (60,60)
Z / z —— 闭合路径(closePath)
自动画线回到路径起点,不带参数
实用技巧与注意事项
- 所有坐标单位是像素,但 vector drawable 会自动缩放适配,所以用整数+合理比例即可(如 24×24、48×48 基准)
- 命令和数字之间**空格可省略**(如
M10,20L30,40合法),但建议加空格提升可读性 - 逗号只用于分隔同一组的 x,y(如
M10,20),不能代替空格分隔不同命令 - Android Studio 的 Vector Asset Studio 可导入 SVG 自动生成 pathData,适合复杂图形
- 避免负坐标过大或超出 `viewportWidth`/`viewportHeight`,否则可能被裁剪
简单例子:画一个带弧角的「返回」箭头
这个路径先画箭头主干(L),再折角、回退、收尾闭合——实际中建议用设计工具导出再微调







