Android中矢量图使用

2017-02-21  本文已影响39人  卖梦想的男孩

Android5.0之后系统支持了矢量图和矢量动画
为了兼容低版本的适配,Google提供了support-vector-drawable 和 support-animated-vector-drawable 支持库,新版的AS使用矢量图的时候,已经支持会自动检测警告了。
Gradle 2.0+ 启用矢量图

 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }  

Gradle 2.0之前

android {
  defaultConfig {
    // Stops the Gradle plugin’s automatic rasterization of vectors
    generatedDensities = []
  }
  // Flag to tell aapt to keep the attribute ids around
  aaptOptions {
    additionalParameters "--no-version-vectors"
  }
}

VectorDrawableCompat支持Api 7+
AnimatedVectorDrawableCompat支持Api 11+
当使用AppCompat和ImageView(或者其子类),xml中可以直接使用app:srcCompat来引用矢量资源,代码中和原来一样,AppCompat中设置代理类来处理。
如果是不使用AppCompat控件也可以,但是需要嵌套一层,做成StateListDrawable,InsetDrawable,LayerDrawable,LevelListDrawable,RotateDrawable之类的,因为它们在初始化的时候系统会先去查找Drawable,这个过程会在代码中出发代理类来搞定矢量图的加载。但是还是需要手动强制全局启用,AppCompat控件默认则不受限制。

static {
//老版本的api,已删除
//AppCompatDelegate.setCompatVectorFromSourcesEnabled(true)
//新的api
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

当然如果怕麻烦其实还有一种方式就是让美工来做,把需要的图片放到一个集合做成ttf字体文件,使用图片的过程其实就是自定义字体的过程,这种最好是做小图标之类的。

上一篇下一篇

猜你喜欢

热点阅读