文档章节

vectalign-samples变形动画_源码分享

梦想_在追逐
 梦想_在追逐
发布于 2015/09/09 14:12
字数 500
阅读 138
收藏 0

我们知道4.4以后AnimatedVectorDrawable可以让两个SVG图像无缝过渡 (称为变形动画),但是这两个svg图像的path必须参数个数要相等,同时这些参数的类型要匹配(也就是说格式要对齐),如果不对齐会产生异常。简单的 path可以手动修改对齐,但是复杂点的就比较难了。这个工具就是通过命令行的方式将任意两个svg资源转换成对齐的模式,而不会改变原始图像的外观。

运行效果:


完整源码地址:http://www.itlanbao.com/code/20150909/10000/100516.html


package org.bonnyfone.vectalignsamples;

import android.content.Intent;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;

import com.wnafee.vector.MorphButton;

public class ActivityMainActivity extends AppCompatActivity {

    private ViewGroup parent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_activity_main);
        parent = (ViewGroup) findViewById(R.id.base_view);

        //Default image
        handleMenu(R.id.action_droid_to_apple);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_activity_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        handleMenu(item.getItemId());
        return true;
    }

    private void handleMenu(int id){
        switch (id){
            case R.id.action_github:
                final String url = "https://github.com/bonnyfone/vectalign";
                Intent i = new Intent(Intent.ACTION_VIEW);
                i.setData(Uri.parse(url));
                startActivity(i);
                break;

            case R.id.action_droid_to_apple:
               swapView(createMorphableView(R.drawable.animated_vector_droid_for_apple, R.drawable.animated_vector_apple, Color.parseColor("#4CAF50")));
                break;

            case R.id.action_heart:
               swapView(createMorphableView(R.drawable.animated_vector_twitter, R.drawable.animated_vector_heart, Color.parseColor("#039BE5")));
                break;

            case R.id.action_cart_to_droid:
               swapView(createMorphableView(R.drawable.animated_vector_cart, R.drawable.animated_vector_droid_for_cart, Color.parseColor("#FF5252")));
                break;

            case R.id.action_icons:
               swapView(createMorphableView(R.drawable.animated_vector_icon_a, R.drawable.animated_vector_icon_b, Color.parseColor("#311B92")));
                break;

            case R.id.action_wifi_to_retwwet:
               swapView(createMorphableView(R.drawable.animated_vector_wifi, R.drawable.animated_vector_retweet, Color.parseColor("#607D8B")));
                break;

        }
    }

    private void swapView(View newView){
        View toRemove = parent.findViewById(R.id.morph_id);
        parent.removeView(toRemove);
        newView.setId(R.id.morph_id);
        parent.addView(newView, toRemove.getLayoutParams());
    }

    private View createMorphableView(int startDrawable, int endDrawable, int color){
        MorphButton mb = new MorphButton(this);
        mb.setForegroundTintList(ColorStateList.valueOf(color));
        mb.setForegroundTintMode(PorterDuff.Mode.MULTIPLY);
        mb.setBackgroundColor(Color.TRANSPARENT);
        mb.setStartDrawable(startDrawable);
        mb.setEndDrawable(endDrawable);
        mb.setState(MorphButton.MorphState.START);
        return  mb;
    }

}

© 著作权归作者所有

梦想_在追逐
粉丝 4
博文 22
码字总数 14217
作品 0
昌平
私信 提问
2015最火十大Android开源项目,是个程序员你就该看看!

1.目前最火的android-image-slide-panel图片照片墙的加载和滑动特效 http://www.itlanbao.com/code/20150908/10000/100513.html 2.超高仿QuickNews新闻客户端源码 http://www.itlanbao.com/......

梦想_在追逐
2015/09/16
459
0
程序猿必备的10款web前端动画插件一

  1.动画SVG框架幻灯片   在幻灯片之间切换时显示动画SVG帧的实验性幻灯片。不同的形状可以用来创建各种风格。   我们想和大家分享一个实验幻灯片。我们的想法是在从一个幻灯片转换到另...

爱前端
2017/12/08
0
0
程序猿必备的10款web前端动画插件二

  1.菜单悬停效果的展示   一些菜单链接悬停效果为您的灵感。由CSS和JavaScript为单个字母动画提供支持。今天,我们希望与您分享一些菜单悬停效果。我们希望这一套启发你,并为你的下一个...

爱前端
2017/12/09
0
0
HTML5 CSS3 精美案例 : 实现VCD包装盒个性幻灯片

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/31015121 哈,首先感谢下w3cfuns的老师,嗯~ 好了,这次给发夹分享一个CSS3+Javascript VCD包装盒个性幻灯片的一个案例...

lmj623565791
2014/06/15
0
0
Unity插件 - MeshEditor(五) 网格顶点动画(变形动画)

源码已上传至github,并持续更新,链接请看底部。(本帖跟随github持续更新) 网格顶点动画(变形动画)是针对于物体的形状可以随意变换并记录为关键帧的动画,虽然模型的顶点数据还是应该交...

qq992817263
2016/08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
11分钟前
6
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
9
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部