讲师中心 微信公众号
AI工具推荐 视频效率加速

Android vector fillType详解 XML中path的EvenOdd与NonZero区别

夏静小哥_2513

夏静小哥_2513

发布时间:2026-03-01 04:21:33

|

349人浏览过

|

来源于php中文网

原创

fillType="evenOdd" 和 fillType="nonZero" 的填充区域取决于路径走向与射线交点的有向代数和(nonZero)或奇偶计数(evenOdd),而非视觉形状;内环需反向绘制才能在 evenOdd 下正确镂空。

android vector filltype详解 xml中path的evenodd与nonzero区别

fillType="evenOdd" 和 fillType="nonZero" 到底填哪块?

关键看 path 自身的走向和交叉逻辑,不是看形状“看起来”有没有洞——很多开发者画了个带内环的图标,设了 fillType="evenOdd" 却发现内环没被挖空,其实是路径方向写反了。

Android 的 fillType 控制的是「描边闭合后,像素点是否被判定为内部」的填充规则,底层用的是 Skia 的 winding rule。它不解析几何拓扑,只数路径段穿过某点的「有向次数」。

  • nonZero:从点引一条射线,统计所有与之相交的路径段的「方向代数和」;只要和 ≠ 0,就填充
  • evenOdd:同样引射线,只看交点总数是奇数还是偶数;奇数才填充

所以哪怕你画了两个完全重叠的圆形,方向相反,nonZero 下它们会互相抵消(净绕数为 0),结果不填;而 evenOdd 只数 2 个交点 → 偶数 → 也不填。但若只是嵌套、方向一致,nonZero 会填满整个外轮廓,evenOdd 才能挖空内环。

vector drawable 中 pathData 的方向怎么影响 fillType?

Android 不强制要求顺时针/逆时针,但 fillType 的行为高度依赖你手写的 pathData 走向。尤其是用工具导出 SVG 转 vector 时,常见问题就是内环被反向生成,导致 evenOdd 失效。

典型错误现象:android:pathData="M100,100 L200,100 L200,200 L100,200 Z M150,150 L180,150 L180,180 L150,180 Z" —— 两个矩形都是顺时针闭合,evenOdd 下内矩形不会被挖掉(因为交点数是偶数,但实际渲染仍实心);必须把内环改成逆时针,比如 M150,150 L150,180 L180,180 L180,150 Z,才能正确镂空。

Android Adb
Android Adb

执行 Android ADB(Android 调试桥)命令,用于设备管理、应用管理、调试和自动化。当用户请求任何与 ADB 相关的操作时使用。

下载
  • 用 Android Studio 的 Vector Asset Studio 导入 SVG 时,默认启用「Optimize for vector drawables」,它会自动翻转内环方向适配 evenOdd
  • 手动写 pathData 时,建议用 nonZero + 统一顺时针方向,最稳;需要镂空再切到 evenOdd 并检查内环走向
  • Chrome DevTools 或 Inkscape 的「Path > Reverse Direction」可快速验证/修正方向

为什么有时 evenOdd 在低版本 Android 上表现异常?

Android 5.0(API 21)才正式支持 fillType 属性;5.0 之前该字段被直接忽略,默认按 nonZero 行为处理。更隐蔽的问题在 API 21–22:某些复杂自相交路径下,evenOdd 渲染结果与高版本不一致,比如一个「8」字形路径,部分设备上中间交叠区被误填。

  • 目标最低 SDK ≥ 23 时,evenOdd 行为基本可靠;低于 23 必须做兼容降级(例如拆成多个独立 group 或改用 bitmap fallback)
  • 避免在 evenOdd 路径中使用 c(三次贝塞尔)或 s(平滑贝塞尔)产生隐式自交,优先用直线段 + 圆弧组合
  • 真机测试比模拟器更准——部分模拟器对 Skia winding 实现有简化

fillType 对性能和内存有影响吗?

几乎没有。无论是 evenOdd 还是 nonZero,Skia 在光栅化阶段才做 winding 判定,且只对每个像素做一次射线投射(优化后实际是扫描线算法),开销远小于 path 解析或 shader 计算。

真正影响性能的是 pathData 复杂度:1000 个点的路径,无论什么 fillType,解析和缓存成本都一样高;而一个带 10 层嵌套环的简单路径,evenOdd 也比 10 条独立路径快得多。

  • 别为了“省性能”硬改 fillType;该镂空就用 evenOdd,该保实心就用 nonZero
  • 过度拆分 path(比如把一个图标拆成 20 个 path 元素)反而增加 XML 解析和绘制状态切换开销
  • VectorDrawable 的内存占用主要取决于 pathData 字符串长度和节点数,跟 fillType 无关

绕数规则本身很简单,难的是你画的路径到底怎么走——盯着 pathData 最后那个 Z 前的点序,比查文档管用。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

2626

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4979

2023.11.06

Chrome开启无痕模式
Chrome开启无痕模式

本专题整合了Chrome无痕模式开启相关内容,阅读专题下面的文章了解更多详细教程。

3587

2026.03.24

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4364

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

5617

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

2402

2024.11.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1678

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2524

2023.09.04

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

20

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 44.1万人学习

Java 教程
Java 教程

共578课时 | 190.7万人学习

Uniapp从零开始实现新闻资讯应用
Uniapp从零开始实现新闻资讯应用

共64课时 | 9.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn