简单来说:是的,画一个圆肯定是实心的。要变成空心(圆环),必须有两个圆(一内一外)的数据。
这里有一个非常重要的概念区别:「路径数据(Path Data)」和「填充规则(FillType)」。
1. 为什么你之前的图标是实心的?
并不是因为你画了“一个圆”,而是因为你的路径数据里其实包含了三个形状(全部塞在同一个<path>标签里):
- 外圆(大饼)
- 内圆(用来挖空的洞)
- 中间的叉(X)
在默认的nonZero填充模式下,Android 可能会认为“内圆”也是要涂颜色的部分,结果把“外圆”和“内圆”都涂满了,导致你看不到洞,只看到一个大黑圆。
2.evenOdd做了什么?
当你改成evenOdd(奇偶规则)时,它的逻辑变成了:
- 遇到第一层线(外圆):开始涂色。
- 遇到第二层线(内圆):停止涂色(挖空)。
- 遇到第三层线(中间的叉):重新开始涂色。
所以,evenOdd只有在“图形重叠