贝利信息

Android的vector.xml怎么写 SVG路径转换方法

日期:2026-01-08 00:00 / 作者:星降
Android vector.xml 本质是简化适配的SVG路径子集,需将d属性转为大写命令、显式闭合、统一绝对坐标,并用AS导入或工具辅助转换以确保兼容性。

Android 的 vector.xml 本质是用 XML 描述矢量图形,它不直接支持完整 SVG 标准,但能兼容大部分常见路径(d 属性)。关键在于把 SVG 的 中的 d 指令**简化、标准化、适配 Android 语法**,而不是逐字照搬。

SVG 路径转 vector.xml 的核心原则

Android VectorDrawable 只支持 SVG PathData 的子集,不支持:
– 变换(transform)、
– 非闭合路径的隐式闭合(需显式加 Z)、
– 相对指令混用(建议统一用大写绝对坐标)、
– 高级曲线如 h/v 简写(可转为 L)、q/t(建议转为 CS)。

手动转换的实用步骤

推荐工具链(省时避坑)

一个真实转换示例

原始 SVG 片段:

转换后 vector.xml 中的 path:

android:pathData="M20 30 C30 35 40 45 40 60 L30 60 C30 52 24 45 20 45 Z"

说明:
mM(起点)
cC(三次贝塞尔,参数补全为 6 个)
lL(直线)
– 第二个 c 转为 C 并计算控制点(等价于 Android 支持的格式)
– 结尾加 Z 显式闭合

基本上就这些。重点不是“完全还原 SVG”,而是“在 VectorDrawable 规则下准确表达图形意图”。多导几次、对比预览,比死磕语法更快。