Android Vector Drawable 的 pathData 是 SVG 路径指令的简化子集,支持 M/m、L/l、H/h、V/v、C/c、Z/z 等命令,区分绝对/相对坐标,不支持 S、Q、A 等高级指令,需注意坐标格式、空格分隔及调试方法。
Android Vector Drawable 的 pathData 是定义矢量图形轮廓的核心语法,本质是 SVG 路径指令的简化子集,但不支持所有 SVG 特性(比如不支持贝塞尔曲线的相对坐标缩写、不支持 arc 的椭圆参数变形)。写对的关键在于理解命令字母、坐标规则和常见陷阱。
pathData 是一串空格或逗号分隔的指令序列,每条指令由单个大写或小写字母开头,后跟若干数字坐标。大小写区分绝对/相对坐标:
M x y 是绝对坐标,m dx dy 是相对于上一个点的偏移L x y 画到绝对位置,l dx dy 画到相对位置H x 画到绝对 x(y 不变),h dx 水平移动 dxV y 画到绝对 y(x 不变),v dy 垂直移动 dyC x1 y1 x2 y2 x y(控制点1、控制点2、终点),相对形式同理以下是一个简单箭头图标,用 包裹 :
说明:
– M 8,12:从 (8,12) 开始
– L 16,12:画水平线到 (16,12)
– L 12,16:再画斜线到 (12,16)
– Z:自动连回 (8,12),形成三角形箭头
12、12.0 或 12.5,但不能省略小数点后为 0 的写法(如 12. 合法,12 也合法)
ML 解析器会报错);建议用空格分隔,提高可读性S(平滑三次贝塞尔)、Q(二次贝塞尔)、A(椭圆弧)等高级指令;需要圆角可用 C 近似模拟android:fillType="evenOdd" 可改填充规则(用于镂空、复合形状)pathData 复制到在线 SVG 编辑器(如 SVGOMG 或 CodePen)预览,确认形状正确后再粘回 XML手动写复杂路径容易出错,推荐流程:
android:pathData 字段,直接复制使用