What VectorDrawableCompat is for?
我读过这篇文章,但对我来说仍然没有意义。
从 gradle build tools 1.5.0 开始,我们可以在应用程序中使用矢量绘图。对于 Lollipop 及以上的向量使用,对于以下的 os 版本,gradle 生成 PNG 文件并将它们放在 drawable_\\'density\\'_v4 中。
好的,很清楚。
现在我们还对矢量可绘制对象进行了兼容性支持,我已按照此说明在我的应用程序中支持它们,但是当它完成并且似乎一切正常时,我仍然可以在 apk 文件中找到生成的 PNG 文件。 那么,如果应该使用支持drawable,有什么区别以及为什么会生成PNG文件? 对于 Gradle 2,您需要添加: 到你的 build.gradle. 对于 gradle 1.5
2
3
4
5
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
2
3
4
5
6
7
8
9
defaultConfig {
generatedDensities = []
}
aaptOptions {
additionalParameters"--no-version-vectors"
}
}
这里有完整的细节:http://android-developers.blogspot.co.uk/2016/02/android-support-library-232.html
a)PNG 生成方案 Vs. 的区别b)VectorDrawableCompat 是 :
1) APK 大小。对于 a),您最好使用多 apk,这样一个 APK 用于 >=21,一个用于 <21。这样,可以减小 >=21 的 APK 大小。
对于 b),无论最低 API 级别如何,都应减小整个 APK 的 APK 大小。
2) 功能限制。 a) 不支持 Vectordrawable 内部的一些很少使用的属性。对于 b) 虽然支持所有属性,但它需要一些代码更改,例如从 anrdoid:src 到 app:srcCompat。
3) 参考:对于a),您可以在Java/XML 中的任何地方参考VectorDrawable(或生成的PNG),而不知道它是否为Vector。但是对于 b) 你必须使用 app:srcCompat 来引用 VectorDrawableCompat,或者在 DrawableContainer 中使用。
简而言之,如果您的目标是为所有操作系统版本提供最佳 APK 大小并且不介意稍微更改代码,请使用 VectorDrawableCompat。否则,PNG 生成单独的 APK 对您来说已经足够了。