VectorDrawableCompat 有什么用?
What VectorDrawableCompat is for?
我已经阅读了 this 篇文章,但对我来说仍然没有任何意义。
自 gradle 构建工具 1.5.0 以来,我们可以在应用程序中使用矢量绘图。对于 Lollipop 及以上版本,使用向量,对于 os 以下版本,gradle 生成 PNG 文件并将它们放置在 drawable_'density'_v4.
好了,明白了。
现在我们也有对矢量绘图的兼容性支持,我已经按照 this 说明在我的应用程序中支持它们,但是当它完成并且一切似乎都正常时,我仍然可以在 apk 文件中找到生成 PNG 文件。
那么,如果应该使用支持可绘制对象,有什么区别以及为什么会生成 PNG 文件?
对于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
a)PNG 生成解决方案与。 b)VectorDrawableCompat 是:
1) APK 大小。对于 a),您最好使用多 apk,这样一个 APK 用于 >=21,一个 APK 用于 <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中使用。
简而言之,如果您的目标是为所有 OS 版本提供最佳 APK 大小并且不介意稍微更改代码,请使用 VectorDrawableCompat。否则,PNG 生成 + 单独的 APK 就足够了。
我已经阅读了 this 篇文章,但对我来说仍然没有任何意义。
自 gradle 构建工具 1.5.0 以来,我们可以在应用程序中使用矢量绘图。对于 Lollipop 及以上版本,使用向量,对于 os 以下版本,gradle 生成 PNG 文件并将它们放置在 drawable_'density'_v4. 好了,明白了。
现在我们也有对矢量绘图的兼容性支持,我已经按照 this 说明在我的应用程序中支持它们,但是当它完成并且一切似乎都正常时,我仍然可以在 apk 文件中找到生成 PNG 文件。
那么,如果应该使用支持可绘制对象,有什么区别以及为什么会生成 PNG 文件?
对于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
a)PNG 生成解决方案与。 b)VectorDrawableCompat 是:
1) APK 大小。对于 a),您最好使用多 apk,这样一个 APK 用于 >=21,一个 APK 用于 <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中使用。
简而言之,如果您的目标是为所有 OS 版本提供最佳 APK 大小并且不介意稍微更改代码,请使用 VectorDrawableCompat。否则,PNG 生成 + 单独的 APK 就足够了。