我已阅读this文章,但对我来说仍然没有意义。
从gradle构建工具1.5.0开始,我们可以在app中使用vector drawables。对于Lollipop及以上的矢量使用,对于低于os的版本,gradle生成PNG文件并将它们放在drawable_'density'_v4中。 好的,那很清楚。
现在我们还有矢量drawable的兼容性支持,我已经按照this指令在我的应用程序中支持它们,但是当它完成并且一切似乎都有效时,我仍然可以在apk文件中找到生成的PNG文件。
那么,如果应该使用支持drawable,那么有什么区别以及为什么生成PNG文件?
答案 0 :(得分:4)
对于Gradle 2,您需要添加:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
到你的build.gradle。
对于gradle 1.5
android {
defaultConfig {
generatedDensities = []
}
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
此处详细信息:http://android-developers.blogspot.co.uk/2016/02/android-support-library-232.html
答案 1 :(得分:0)
a)PNG生成解决方案的差异。 b)VectorDrawableCompat是:
1)APK大小。对于a),你最好使用multi-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将足够你。