android使用SVG


      为什么要使用SVG.

      SVG可以减小app体积。

      SVG具有体积小、加载速度快、放大缩小无拉伸的特点。


      Android中加载图片主要有两个阶段:   获取本地资源时间+图片渲染时间。

      经过试验:

      png或jpeg的   获取本地资源时间2923us,   渲染时间49um  总和2972us

      svg获取本地资源时间247us ,627us    总和874us。

      加载效率是png和jpeg的3倍。


      SVG是一种采用XML来描述二维图形的语言,所以它可以直接打开xml文件来修改和编辑

      SVG着重将图片的着色和绘制路径记录在SVG文件中,调用时重新渲染。


     SVG介绍:

     1)SVG,即Scalable Vector Graphics 可伸缩矢量图形,这种图像格式在前端中已经使用的非常广泛了。
            SVG的W3C的解释: http://www.w3school.com.cn/svg/svg_intro.asp
            首先要解释下什么是矢量图像,什么是位图图像?
            1、矢量图像:SVG是W3C 推出的一种开放标准的文本式矢量图形描述语言,他是基于XML的、专门为网络而设计的图像格式,
                SVG是一种采用XML来描述二维图形的语言,所以它可以直接打开xml文件来修改和编辑。
            2、位图图像:位图图像的存储单位是图像上每一点的像素值,因而文件会比较大,像GIF、JPEG、PNG等都是位图图像格式。
     2)Vector,在Android中指的是Vector Drawable,也就是Android中的矢量图,
                可以说Vector就是Android中的SVG实现(并不是支持全部的SVG语法,现已支持的完全足够用了)


    准备工作:

    一、SVG文件图像转化

     (1)、SVG转化成android的Vector工具:

          http://inloop.github.io/svg2android/

     (2)、将SVG转换成图像并编辑

         http://editor.method.ac/

     (3).使用AndroidStudio插件完成SVG添加(Vector Asset Studio)
                    详细:http://www.jianshu.com/p/d6c39f2dd5e7
                    AS会自动生成兼容性图片(高版本会生成xxx.xml的SVG图片;低版本会自动生成xxx.png图片)

     (4).有些网站可以找到SVG资源
                    SVG下载地址: http://www.shejidaren.com/8000-flat-icons.html
                                  http://www.flaticon.com/
                                  
                                  http://www.iconfont.cn/plus --- 阿里巴巴
                                  
                    图片转成SVG https://vectormagic.com/

         

 


兼容问题,5.0以上的可以直接用:
    
一、兼容5.0以下的版本

    1、使用Android Studio 2.2以上的版本,gradle版本在2.0以上,准备步骤

    1.1、添加
·    defaultConfig {
        vectorDrawables.useSupportLibrary = true

    }
    1.2、添加
    compile 'com.android.support:appcompat-v7:25.3.1' //需要是23.2 版本以上的

    1.3、Activity需要继承与AppCompatActivity

    1.4、布局文件当中添加
        xmlns:app="http://schemas.android.com/apk/res-auto"


    2、使用在Actvity前面添加一个flag设置
        
        static {
            AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
        }

    2.1 ImageView/ImageButton
        XML app:srcCompat
        代码里面使用无区别

    2.2 Button 不支持app:srcCompat
        Xml 使用在Button的selector
    
    2.3 RadioButton 直接使用
    
    2.4 textview的drawable  直接使用

    

    2.5 使用的动态Vector Drawable
        主要是不能直接修改 pathData
        不能使用自定义interpolator


    android代码:

   ic_check.xml:

    

   check_anim.xml:

<?xml version="1.0" encoding="utf-8"?>        

 

   check_animator.xml:

<?xml version="1.0" encoding="utf-8"?>    

   main_activity.xml

<?xml version="1.0" encoding="utf-8"?>    

  MainActivity.java:

public class MainActivity extends AppCompatActivity {    static {        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    public  void anim(View view){        ImageView imageView = (ImageView) view;        Drawable drawable = imageView.getDrawable();        ((Animatable)drawable).start();    }}

   实现效果:

android使用SVG_第1张图片

    

更多相关文章

  1. [转] Android TextView处理HTML标签、显示图片等
  2. Android中几种图像特效处理
  3. Android绘图机制与处理技巧——Android图像处理之图形特效处理
  4. 2014-11-8Android学习------Android 实现图片的旋转--------动画
  5. android中使用线程池和临时缓存优化网络图片加载
  6. Android Nine Patch图片及按钮背景
  7. Android图片异步加载之Android-Universal-Image-Loader

随机推荐

  1. 关于Sytem.gc()主动触发Android(安卓)GC
  2. Android中的Intent Filter与安全
  3. unity obb 分包 上传googleplay
  4. Android隐藏输入法软键盘的一些说明
  5. android基本 UI(三)—单选RadioButton与复
  6. Android(安卓)ui utils-简单实用的Androi
  7. Android: Android(安卓)Thumbnail 攻略
  8. Android(安卓)金钱计算BigDecimal 的使用
  9. android no target available 解决
  10. [Android(安卓)Training视频系列]1.2 Run