Android 矢量动画的使用

阿里图标库

drawable->new->vector-Asset->loacl file->path 


 首先捋清关系~

我们拿到一个svg类型的图片 ,可以直接在ImageView 的 src 赋值 用.

如果我们想要控制 svg的 绘制,或者给他加一些动画效果


一:

Android 矢量动画的使用_第1张图片

这是一个svg,我们阿里图标库下载的

只有 一个path

需要给path  加一个name


二:

需要在Drawable 下创建animated-vector 




    
    
    

    
    
    

    
    
    



三:

objectAnimator



    

    

    

    

    

    

    

    

    


    



四:

需要 srcCompat 引用

注意app 不是 Android


        

 MainAc

 Drawable drawable = iv2.getDrawable();
                if (drawable instanceof Animatable) {
                    ((Animatable) drawable).start();
                }

效果1


Android 矢量动画的使用_第2张图片


换一个动画

 

    

 

Android 矢量动画的使用_第3张图片


然后是 图形变换

首先是来个svg

一个瓶子 一个赞 都是只有一个Path

现在想让 瓶子变成 赞

瓶子的svg 需要检查一下

Android 矢量动画的使用_第4张图片

 因为图形变化需要明确划分group



    

        

    

这里的playgroup  和 play 需要自己起上   也是一个 playgroup 代表在这个容器里 进行 变化 ,play 表示需要变化的 path

也就是 我们把 瓶子 的 Path  变换 成 赞 的path

突然转回来 发现 这些svg 需要特定的 转换才可以 

我找了 俩个 差不多的 svg图 总之他俩可以,然后开始转换


首先是R.drawable.xin_to_tuite



    

    
    

    
    


svg_xin



    

        

    


R.Anim_anim_xin_to_tuite



    

    

    

    

    

    

    

    

    


    

    
    


R.anim_anim_rotation



    

    

    

    

    

    

    

    

    


    


运行

Android 矢量动画的使用_第5张图片


现在让他可以控制状态




    

    

    

    

final ImageView iv2 = findViewById(R.id.iv2);

        iv2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                isTwitterChecked = !isTwitterChecked;
                final int[] stateSet = {android.R.attr.state_checked * (isTwitterChecked ? 1 : -1)};
                iv2.setImageState(stateSet, true);

            }
        });

就是把上面的反过来.

Android 矢量动画的使用_第6张图片


现在感觉还可以 ,研究一下为啥会报错  Can't morph from

这个Android 矢量动画的使用_第7张图片

于是乎找到了 别人的记录

https://github.com/bonnyfone/vectalign

https://www.jianshu.com/u/4d3da5286550

Android 矢量动画的使用_第8张图片

然后顺着填进去




    

    


    

    

Android 矢量动画的使用_第9张图片

感觉有点大

Android 矢量动画的使用_第10张图片

 

动画不好?

原来这里没有动画

Android 矢量动画的使用_第11张图片

那手动加上去

分别对他们进行修改添加

vectalign_animated_vector_drawable_end_to_start.xml

 
     

     
     
     


 

vectalign_animated_vector_drawable_start_to_end.xml

 
     

     
     

 

vectalign_vector_drawable_end.xml



    
     
    

vectalign_vector_drawable_start.xml



    
    
     
    

Android 矢量动画的使用_第12张图片

pivot 代表动画的中心  这里viewportHeight/2  就可以了

Android 矢量动画的使用_第13张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Android 矢量动画的使用)