Android activity启动关闭时滑动出现消失(并解决activity跳转时出现的短暂黑屏)

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>

 

 

猜你喜欢

转载自blog.csdn.net/ZytheMoon/article/details/108472120