VectorDrawableCompat用于什么?

时间:2016-03-11 06:30:51

标签: android android-support-library

我已阅读this文章,但对我来说仍然没有意义。

从gradle构建工具1.5.0开始,我们可以在app中使用vector drawables。对于Lollipop及以上的矢量使用,对于低于os的版本,gradle生成PNG文件并将它们放在drawable_'density'_v4中。 好的,那很清楚。

现在我们还有矢量drawable的兼容性支持,我已经按照this指令在我的应用程序中支持它们,但是当它完成并且一切似乎都有效时,我仍然可以在apk文件中找到生成的PNG文件。

那么,如果应该使用支持drawable,那么有什么区别以及为什么生成PNG文件?

2 个答案:

答案 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将足够你。