Android Vector Drawable XML路径数据怎么写 pathData语法

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

Android 的 Vector Drawable 中 `pathData` 是定义图形路径的核心语法,它类似 SVG 的 `d` 属性,用一串命令和坐标描述线条、弧线、贝塞尔曲线等。写对 `pathData` 是画出正确图标的关键。

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`,否则可能被裁剪

简单例子:画一个带弧角的「返回」箭头

android:pathData="M20,12 L12,20 L13.4,21.4 L21.8,13 L18,13 L18,11 L22,11 L22,15 L20,15 Z" />

这个路径先画箭头主干(L),再折角、回退、收尾闭合——实际中建议用设计工具导出再微调


# android  # svg  # 工具  # xml  # 值参数  # android studio  # 塞尔  # 相对于  # 画一  # 过大  # 不带  # 画出  # 自动生成  # 格式为  # 需注意  # 性及 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何保护应用免受CSRF攻击?(原理和示例)  如何在阿里云通过域名搭建网站?  Linux系统命令中screen命令详解  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  如何在云主机快速搭建网站站点?  如何确保西部建站助手FTP传输的安全性?  ,交易猫的商品怎么发布到网站上去?  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  Mybatis 中的insertOrUpdate操作  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  如何用PHP快速搭建CMS系统?  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  网站制作价目表怎么做,珍爱网婚介费用多少?  Laravel如何使用Gate和Policy进行授权?(权限控制)  个人网站制作流程图片大全,个人网站如何注销?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  iOS UIView常见属性方法小结  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  Android自定义控件实现温度旋转按钮效果  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何用西部建站助手快速创建专业网站?  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  教学论文网站制作软件有哪些,写论文用什么软件 ?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  新三国志曹操传主线渭水交兵攻略  历史网站制作软件,华为如何找回被删除的网站?  如何快速搭建高效WAP手机网站?  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何在香港服务器上快速搭建免备案网站?  Java解压缩zip - 解压缩多个文件或文件夹实例  JavaScript中的标签模板是什么_它如何扩展字符串功能  如何挑选高效建站主机与优质域名?  香港服务器选型指南:免备案配置与高效建站方案解析  制作企业网站建设方案,怎样建设一个公司网站?  如何在橙子建站上传落地页?操作指南详解  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Laravel如何实现API版本控制_Laravel版本化API设计方案  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Laravel如何处理异常和错误?(Handler示例)  如何做网站制作流程,*游戏网站怎么搭建?  Laravel中的withCount方法怎么高效统计关联模型数量  如何快速生成专业多端适配建站电话?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  详解Android中Activity的四大启动模式实验简述  湖南网站制作公司,湖南上善若水科技有限公司做什么的?