美文网首页
Android中矢量图使用

Android中矢量图使用

作者: 卖梦想的男孩 | 来源:发表于2017-02-21 10:24 被阅读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字体文件,使用图片的过程其实就是自定义字体的过程,这种最好是做小图标之类的。

    相关文章

      网友评论

          本文标题:Android中矢量图使用

          本文链接:https://www.haomeiwen.com/subject/kqsewttx.html