Activity在切换或者是退出的时候可以使用渐入,滑动,缩放等动态效果。使用的就是方法overridePendingTransition,可以直在Activity当中直接调用。
第一个参数为Activity进入时的动画,第二参数为Activity离开时的动画效果。此方法在startActivity()或者是finish()后调用,在切换或是退出时就会调用此动画。
不过有时候overridePendingTransition 这个函数会不起作用,总结下,大概是以下几个方面的原因:
1、android系统版本2.0以下,这个没办法,想其他办法解决切换动画吧。只有在 2.1 以上版本有效
2、在ActivityGroup等的嵌入式Activity中,这个比较容易解决,用如下方法就可以了:this.getParent().overridePendingTransition 就可以解决。
3、在一个Activity的内部类中,或者匿名类中,这时候只好用handler来解决了。
4、必须在 StartActivity() 或 finish() 之后立即调用。
5、手机设置-显示-动画,要开启状态有效
现在要完成A打开B页面,A页面保持不动,B页面从底部滑入显示,而在B返回A页面时,A页面保持不动, B页面从顶部向下滑出消失的这个过程,需要两步:
1、需要配置2个动画XML,一个是启动动画,一个是结束动画。分别在start()和finish()两个地方调用
2、启动调用动画的时机和关闭调用动画的时机。
需要使用到的这几个参数的意思是:
fromAlpha:开始时透明度
toAlpha: 结束时透明度
duration:动画持续时间
public static void start(Activity activity) {
Intent intent = new Intent(activity, SecondActivity.class);
activity.startActivity(intent);
activity.overridePendingTransition(R.anim.activity_anim_scenic_in, R.anim.bottom_silent);
}
public void finish() {
super.finish();
overridePendingTransition(R.anim.bottom_silent, R.anim.activity_anim_scenic_out);
}
需要在anim下添加两个动画文件:
1.启动动画(activity_anim_scenic_in.xml):
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="100%p"
android:toYDelta="0"
android:duration="1500"
/>
</set>
2.结束动画(activity_anim_scenic_out.xml):
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="25"
android:toYDelta="100%p"
android:duration="1500"
/>
</set>
3.设置过场():
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fromYDelta="0"
android:toYDelta="0" />
</set>