android fillType = evenOdd 可绘制的破损矢量
Broken vector drawable with android fillType = evenOdd
android:fillType="evenOdd"
在 Android 21 上使 vectror drawable 损坏,无论如何我们可以修复这个 vector 吗?
我还反编译了 release.apk,发现它们删除了 android:fillType="evenOdd"
,甚至在 debug.apk 上它也有
android:fillType="evenOdd"
但在应用程序上仍然显示损坏的图片
Zach Sperske 更新 2021 Solution0
在你的 defaultConfig in build.gradle vectorDrawables { useSupportLibrary = true } implementation("androidx.appcompat:appcompat:1.2.0")
解决方案 1
扁平化 Sketch and use this site 中的图像以将 SVG 转换为 xml Android
解决方案 2
我使用 nonZero 而不是 evenOdd,并在 Sketch 中打开它以反转顺序,反转后它会更改 pathData 并删除 android:fillType,并且在 Android 21+ 上一切正常。
解决方案 3
PNG
TLDR
经过一些研究,我发现矢量图形、SVG 有两种填充规则 属性 方法,“evenodd”与“nonzero”
我在 Sketch 中打开 SVG 图标并检查了图标顶部的孔。正如预期的那样,它使用 fill-rule:evenodd 属性。现在我必须更改填充规则以使用“非零”属性。如何? Select 路径。在右侧,“填充”属性 处有一个设置图标。单击它并选择“非零”。
从主菜单中,选择图层 → 路径 → 反转顺序。我把图标顶部的洞弄回来了,在应用程序中也弄了个洞。
android:fillType="evenOdd"
在 Android 21 上使 vectror drawable 损坏,无论如何我们可以修复这个 vector 吗?
我还反编译了 release.apk,发现它们删除了 android:fillType="evenOdd"
,甚至在 debug.apk 上它也有
android:fillType="evenOdd"
但在应用程序上仍然显示损坏的图片
Zach Sperske 更新 2021 Solution0
在你的 defaultConfig in build.gradle vectorDrawables { useSupportLibrary = true } implementation("androidx.appcompat:appcompat:1.2.0")
解决方案 1
扁平化 Sketch and use this site 中的图像以将 SVG 转换为 xml Android
解决方案 2
我使用 nonZero 而不是 evenOdd,并在 Sketch 中打开它以反转顺序,反转后它会更改 pathData 并删除 android:fillType,并且在 Android 21+ 上一切正常。
解决方案 3
PNG
TLDR
经过一些研究,我发现矢量图形、SVG 有两种填充规则 属性 方法,“evenodd”与“nonzero”
我在 Sketch 中打开 SVG 图标并检查了图标顶部的孔。正如预期的那样,它使用 fill-rule:evenodd 属性。现在我必须更改填充规则以使用“非零”属性。如何? Select 路径。在右侧,“填充”属性 处有一个设置图标。单击它并选择“非零”。
从主菜单中,选择图层 → 路径 → 反转顺序。我把图标顶部的洞弄回来了,在应用程序中也弄了个洞。