版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21700489/article/details/51175482
:
只需创建一个transition 动画来滑出activity就可以了,覆写要退出的activity的onBackPressed方法
@Override
public void onBackPressed() {
contentRoot.animate() //contentRoot是要退出activity的根视图
.translationY(Utils.getScreenHeight(this))//动画效果是activity的根视图整体向下平移整个屏幕高度,以达到滑动退出的特效
//注意,Util类是一个工具类,它提供获取屏幕高度的方法,实现起来比较简单,这里就不贴代码了
.setDuration(300) //动画持续时间为300毫秒
.setListener(new AnimatorListenerAdapter() {//一旦向下平移结束,真正退出activity
@Override
public void onAnimationEnd(Animator animation) {
SecondActivity.super.onBackPressed();
overridePendingTransition(0, 0);
}
}).start();
}
注意的是为了能够让第二的activity滑动退出是能够看到前一个Activity的滑动,让滑动退出效果看起来更逼真,先将SecondActivity设置成半透明。不然的话扩展动画将显示在默认的窗口背景之上,而不是前一个Activity的view之上。这是因为每个activity的窗口背景都是定义在它所采用的主题中了的。如果我们想让activity变半透明,我们需要修改SecondActivity继承的主题样式,我们只需添上:
<style name="AppTheme.SecondActivity" parent="AppTheme">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
</style>
注意了,由于第二个activity设置成了半透明,如果SecondActivity的根视图即contentRoot没有设置背景的话,会是一种重叠的效果,最好给根视图contentRoot设置背景作为垫底
android:background="#FFFFFF"
不然可能会有这种效果,前一个MainActivity的Hello World!出现在当前的SecondActivity后面