njz*_*zk2 11 svg android vector android-vectordrawable
我有一个SVG图像,我想包含在Android项目中.
该项目的minSdk版本为9.Android Studio为SVG生成PNG文件.
但是,对于API 21+,Android studio将SVG包含在drawable-anydpi-v21
资源文件夹中.
这意味着运行API 21及更高版本的任何设备都将使用SVG而不是PNG.
这就是问题所在:我的SVG需要android:fillType="evenOdd"
.
PNG是正确生成的,但对于SVG,因为该属性是API 24+,它在API 21设备上被忽略,并且图像显示为填充而不是类似线框的图像.
反正有没有说服Android工作室只包含PNG并完全放弃SVG?
还有其他解决方案吗?
解决方案1
\n\n在Sketch中展平图像并使用此站点将 SVG 转换为适用于 Android 的 xml
\n\n解决方案2
\n\n我使用 nonZero 而不是 EvenOdd 并在 Sketch 中打开它以反转顺序,反转后它将更改 pathData 并删除 android:fillType,并且在 Android 21+ 上一切正常。
\n\n解决方案3
\n\n巴布亚新几内亚
\n\n总长DR
\n\n经过一番研究,我发现矢量图形、SVG 有两种填充规则属性方法,即 \xe2\x80\x9cevenodd\xe2\x80\x9d 与 \xe2\x80\x9cnonzero\xe2\x80\x9d
\n\n我在 Sketch 中打开 SVG 图标并检查图标顶部的孔。正如预期的那样,它使用 fill-rule:evenodd 属性。现在我必须更改填充规则以使用 \xe2\x80\x9cnonzero\xe2\x80\x9d 属性。如何?选择路径。在右侧,\xe2\x80\x9cFills\xe2\x80\x9d 属性处有一个设置图标。单击它并选择 \xe2\x80\x9cnon-zero\xe2\x80\x9d。
\n\n从主菜单中,选择图层 \xe2\x86\x92 路径 \xe2\x86\x92 逆序。我在图标顶部找到了这个洞,在应用程序中也找到了这个洞。
\n\n\n小智 5
属性android:fillType
仅用于 API 级别24
及更高级别。对于低于 API 级别,请按照以下步骤操作。
将此添加到您的 Gradle 文件中。
//Gradle Plugin 2.0+
android {
defaultConfig {
...
vectorDrawables.useSupportLibrary true
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是ImageView
,请将其属性更改android:src
为app:srcCompat
。
如果您使用 asandroid:drawableStart
或android:drawableEnd
in TextView
,请将其更改为app:drawableStartCompat
或app:drawableEndCompat
。
归档时间: |
|
查看次数: |
7594 次 |
最近记录: |