Android-L共享元素动画和Circular动画

CircularReveal

这种动画比较简单,定义一个布局,比如本示例中定义一个ImageView,然后在OnClickListener方法中插入如下代码片段

/*本例的ImageView是一个正方形图片*/
imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Animator animator = ViewAnimationUtils.createCircularReveal(
                        imageView,0,0,0,(float)Math.hypot(imageView.getWidth(),imageView.getHeight())
                );
/*这里面的五个参数分别是操作视图,开始点x和y,开始和结束半径*/
                animator.setInterpolator(new AccelerateDecelerateInterpolator());
                animator.setDuration(3000);
                animator.start();
            }
        });

共享元素渐变

这种动画比较复杂,首先你的SDK版本必须大于21。

  1. 在V21style文件中重写你的主题,让主题支持共享元素动画


    


  1. 在布局文件中添加transitionName属性,两个共享的元素名字必须相同,可以在String中定义
  1. 在第一个A Activity中实现以下方法。
    方法名是A Activity里的一个按钮点击事件。
    注释中是实现多个共享元素渐变的方法,导入的Pair必须是V4包的。
 public void Animation1(View v){
        Intent intent = new Intent(this,Animation1.class);
        /*ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(MainActivity.this,
                new Pair(imageView, "moiveImg"), new Pair(button, "actorText"));
        ActivityCompat.startActivity((Top250) context, intent, options.toBundle());*/
        ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(MainActivity.this,button,"Button");
        startActivity(intent,options.toBundle());
    }
  1. 在目标Activity中实现下面的方法,即跳转到的Activity
   ActivityOptions.makeSceneTransitionAnimation(this, button, "Button");

你可能感兴趣的:(Android-L共享元素动画和Circular动画)