导读:本期聚焦于小伙伴创作的《Android vector path data怎么写?矢量图XML中的路径数据详解》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Android vector path data怎么写?矢量图XML中的路径数据详解》有用,将其分享出去将是对创作者最好的鼓励。

Android矢量图通过XML文件定义,其中<path>标签的android:pathData属性是核心,它决定了矢量图的形状和轮廓,其语法和SVG的路径数据语法基本一致,掌握它的编写规则就能自定义各种矢量图形。

Android vector path data怎么写?矢量图XML中的路径数据详解

path data基本语法规则

path data由一系列指令和对应的参数组成,指令区分大小写,大写指令表示坐标是绝对坐标,小写指令表示坐标是相对坐标(相对于上一个点的坐标偏移量)。多个指令之间可以没有分隔符,参数之间可以用空格、逗号分隔。

常用指令说明

指令含义参数说明
M/m移动到指定点x y:目标点的坐标,M是绝对坐标,m是相对坐标
L/l绘制直线到指定点x y:目标点的坐标,L是绝对坐标,l是相对坐标
H/h绘制水平直线x:水平方向的目标坐标,H是绝对坐标,h是相对坐标
V/v绘制垂直直线y:垂直方向的目标坐标,V是绝对坐标,v是相对坐标
C/c三次贝塞尔曲线x1 y1 x2 y2 x y:两个控制点坐标和终点坐标
Q/q二次贝塞尔曲线x1 y1 x y:一个控制点坐标和终点坐标
Z/z闭合路径无参数,连接当前点到路径起点

常见图形path data编写实例

绘制一条直线

从坐标(10,10)到(50,10)绘制一条水平直线,绝对坐标写法如下:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">
    <path
        android:pathData="M10,10 L50,10"
        android:strokeWidth="2"
        android:strokeColor="#FF0000"/>
</vector>

如果用相对坐标写法,等价于M10,10 l40,0,因为从(10,10)到(50,10)的x偏移是40,y偏移是0。

绘制一个矩形

绘制左上角在(5,5),宽20高10的矩形,代码如下:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">
    <path
        android:pathData="M5,5 H25 V15 H5 Z"
        android:strokeWidth="2"
        android:strokeColor="#00FF00"
        android:fillColor="#00FF00"/>
</vector>

这里的路径逻辑是:移动到(5,5),水平画到(25,5),垂直画到(25,15),水平画到(5,15),最后闭合路径回到起点(5,5)。

绘制一个圆形

矢量图中没有直接的画圆指令,通常用三次贝塞尔曲线近似实现,绘制圆心在(12,12),半径10的圆形:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">
    <path
        android:pathData="M12,2 C17.52,2 22,6.48 22,12 C22,17.52 17.52,22 12,22 C6.48,22 2,17.52 2,12 C2,6.48 6.48,2 12,2 Z"
        android:strokeWidth="2"
        android:strokeColor="#0000FF"
        android:fillColor="#0000FF"/>
</vector>

这里通过四个三次贝塞尔曲线段拼接成近似圆形,控制点的计算基于圆的贝塞尔近似公式,k值取0.5522847498,比如从顶部中点(12,2)到右侧中点(22,12)的曲线,控制点是(12+10*k,2)和(22,12-10*k)。

编写path data的注意事项

  • 指令大小写要区分,绝对坐标和相对坐标不要混用导致图形位置错误
  • 参数数量要和指令匹配,比如C指令需要6个参数,少传参数会导致XML解析错误
  • 如果路径比较复杂,可以先使用SVG编辑工具绘制图形,导出SVG后提取path的d属性内容,再放到android:pathData中,注意替换其中的特殊字符符合XML转义规则
  • viewportWidth和viewportHeight要和路径坐标的范围匹配,否则图形可能显示不全
注意:Android的vector path data不支持SVG的A(椭圆弧)指令,如果需要绘制弧线,需要使用贝塞尔曲线模拟,或者使用<arc>标签配合其他属性实现。

Androidvector_path_data矢量图XMLSVG_path修改时间:2026-07-15 15:45:33

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。