android 过渡动画

一.Activity的转场动画

1.overridePendingTransition(enterAnim, exitAnim);

重写Activity的 overridePendingTransition 方法;

需要四个anim目录下的xml文件

// 在finish或startActivity 方法 之后,立刻调用 overridePendingTransition 设置activity 切换的动画
// 参数一:开启的activity执行的动画
// 参数二:结束的activity执行的动画

执行切换到下一个页面的动画
overridePendingTransition(R.anim.next_in, R.anim.next_out);

// 执行切换到上一个页面的动画
overridePendingTransition(R.anim.pre_in, R.anim.pre_out);

next_in

android:duration="500"
android:fromXDelta="100%p"
android:toXDelta="0" >

next_out

android:duration="500"
android:fromXDelta="0"
android:toXDelta="-100%p" >

pre_in

android:duration="500"
android:fromXDelta="-100%p"
android:toXDelta="0" >

pre_out

android:duration="500"
android:fromXDelta="0"
android:toXDelta="100%p" >

2.makeScaleUpAnimation
makeScaleUpAnimation
这种方式个人感觉用途还是很广的,效果就是不断的 放大一个view,进而进行activity的过度, 看代码,

private void launch(View view) { ActivityOptionsCompat compat = 
ActivityOptionsCompat.makeScaleUpAnimation(view, view.getWidth() / 2, view.getHeight() / 2, 0, 0); 
ActivityCompat.startActivity(this, new Intent(this, Activity2.class), compat.toBundle());
}

第1个参数是scale哪个view的大小,第2和3个参数是以view为基点,从哪开始动画,这里是该view的中心,4和5参数是新的activity从多大开始放大,这里是从无到有的过程。

3.多个view的协作 makeSceneTransitionAnimation

代码为:

private void launch2() {    Pair imagePair = Pair.create((View)imageView, 
getString(R.string.image));    Pair textPair = Pair.create((View)textView, 
getString(R.string.name));    ActivityOptionsCompat compat = ActivityOptionsCompat      
      .makeSceneTransitionAnimation(this, imagePair, textPair);    ActivityCompat.startActivity(this, new 
Intent(this, makeSceneTrans.class),            compat.toBundle());
}

xml 文件为:

mainactivity




activity2





ImageView的android:transitionName属性,我们指定为name是image的string,第二个activity的布局文件也有一个transitionName是name为image的string
其中最重要的是 transitionName 这个属性 需要协调的view都添加这个属性 ,告诉系统都是谁参与。

  1. 水波纹平铺 等过渡效果
    参考自:
    https://github.com/XunMengWinter/CircularAnim

that's all
这些应该能满足大部分的 activity的转场动画了。

代码连接:
https://github.com/LzDocker/MyActivityDemofirst

你可能感兴趣的:(android 过渡动画)