Android - 在支持最低 API 级别 20 或更低级别的应用程序中使用矢量绘图有什么优势?

Android - What's the advantage of using vector drawables in the app supporting minimum API level 20 or lesser?

我在我的应用程序中使用矢量可绘制对象的支持库,如下所示,minSdkVersion 是 16。

android {  
    defaultConfig {  
        vectorDrawables.useSupportLibrary = true  
    }  
}

根据官方文档here,它建议了两种在 Play 商店中交付应用程序的方法。

如果我采用第一种方法: 创建一个包含矢量绘图和相应光栅表示的 APK。此解决方案最易于实施。

有什么优势吗?因为它包括矢量绘图和光栅表示。不会增加apk的大小吗?

最重要的是:测试一下

至少为您的目标 sdk 和最小 sdk 获取一个模拟器,看看应用程序是否崩溃,因为 Vector Drawables 和支持库存在 一些 陷阱。

为什么要使用向量?

它们可以缩放。

无论您使用预期的 24dp 绘制可绘制对象还是将其放大到 100dp,它看起来总是很好。如果你用位图尝试同样的事情,就不会那么多了。

另一件事是它们会大大减小您的 apk 大小,因为它们在大多数情况下比光栅化图像小。

缺点是它们可能需要更长的时间来绘制等等,因为除了使用位图之外,还需要进行更多的解析和绘制。如果你保持向量简单,这应该可以忽略不计。

另请参阅 using vector drawables with the support library.

为什么使用向量?

除了上面提到的(可能的)性能影响之外,您可能需要修复一些问题,例如图层列表可绘制对象中的矢量等,因为可以启用对它们的支持,但不建议这样做。此外,它不适用于较低 API 版本的 window 背景,因此,如果您使用 window 背景制作闪屏,您可能仍只想使用位图。


我个人尽可能使用 Vector Drawables。如果您想修改颜色或修复一些东西,它特别有用,因为您只需修改 xml,而不必导出新的图形。