适用于Android N的向量图标和其他图片的Android矢量绘图。

27

我将在我的应用程序中使用矢量可绘制功能来制作操作栏图标和通知图标。

随着Android N的发布,其中最重要的功能之一是屏幕缩放(请参见辅助功能改进部分)。另一个有趣的功能是多窗口支持(如果您想了解更多信息,请参见链接)。

这是否意味着我们也应该为启动器图标和应用程序中使用的其他图像使用矢量可绘制?

3个回答

28
如果您按照以下步骤操作,就可以将矢量图标用作启动器图标:
  1. 将矢量启动器图标放在 drawable 目录下。您不能将矢量可绘制对象放在 mipmap 目录中,因为它们只能在 API 级别 21 及以上的版本上工作。如您所知,建议将 PNG 启动器图标放在 mipmap-<density> 目录而不是 drawable-<density> 目录中,这很重要,因为如果您有一个分裂的 APK 构建或使用新的 aab 格式上传应用("Google Dynamic Delivery"),则这两个过程都会删除除当前密度之外的所有 drawable-<density> 目录。

  2. 如果您先前设置了 build.gradledefaultConfig 部分中的 vectorDrawables.useSupportLibrary = true,请将其移除。这将为低于 21 的 API 级别的矢量可绘制对象启用构建时 PNG 生成。如果您不删除此选项,则 <application> 标记的 android:icon 属性将加载默认的 Android “绿色机器人”图标。

我在 API 级别 16 设备上测试过,它完美地工作。


谢谢,我会在下一个迭代中尝试。我只是有点担心兼容性问题,因为我的项目以16和19作为最低SDK目标。 - JJ86
@JJ86 我在 API 级别为 16 的设备上测试过了,它完美地工作了。 - mixel
非常感谢您的反馈! - JJ86
1
“#2”对于Gradle v4+和Support Library v26+仍然有效吗?如果您在某些系统上看到了这个机器人图标,我会期望至少有一个编译器警告... - l33t
1
只要您不使用渐变(需要API 24),这将起作用。 - geekley

24

矢量图标不支持用于启动器图标。但在其他任何地方,您都可以使用它。

注:此处使用的“启动器图标”指应用程序的图标,用于显示在移动设备主屏幕上或应用程序列表中的图标。

5
这还正确吗?我可以像这样使用矢量图:<application android:icon="@drawable/mysvg_logo"... 我甚至可以在启动器上看到它。 - rpattabi
3
如果您正在使用自动矢量转换为PNG,则可以正常工作。如果您只在API 21+上运行,根据您的资源和所使用的启动器,它可能会正常工作;然而,我不认为Play Store允许您上传带有矢量图标的APK。 - alanv
4
相反地,我不仅发现了几个使用向量图标(XML)作为启动器图标的应用程序,而且这篇教程甚至建议这样做。如果有任何(官方)来源可以确认或拒绝您的陈述,链接将是受欢迎的。 - Izzy
@alanv 这个答案很有用,值得一提:https://dev59.com/fVsV5IYBdhLWcg3wsQnf#47910420 - JJ86
5
这个回答已经过时。 - Fung
显示剩余2条评论

4

看起来矢量图标现在支持用于启动器图标了。 我最近上传并发布了一个应用(至alpha版本),其中使用了矢量图标作为启动器图标。


https://developer.android.com/training/multiscreen/screendensities - Jason Yeung

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接