简单实现Activity退出时向下滑动的动画效果

1.覆写 Activity#onBackPressed 方法

@Override
public void onBackPressed() {
    contentRoot.animate()                           //contentRoot退出activity的根视图
        .translationY(Utils.getScreenHeight(this))  //根视图整体向下平移整个屏幕高度效
        .setDuration(300)                           //动画持续时间为300毫秒
        .setListener(new AnimatorListenerAdapter() {//一旦向下平移结束,真正退出activity
                @Override
                public void onAnimationEnd(Animator animation) {
                    SecondActivity.super.onBackPressed();
                    overridePendingTransition(0, 0);
                }
            }).start();
   }

2.修改退出的Activity的主题样式

​ 为了让Activity滑动退出时能够看到前一个Activity的视图,让滑动效果更流畅。必须把即将退出的Activity的背景主题设置为半透明。否则下滑动画会显示在默认的窗口背景之上,而不是前一个Activity的view之上。这是因为每个activity的窗口背景都是定义在它所采用的主题中的。如果我们想让activity变半透明,我们需要修改退出的Activity继承的主题样式,只需添上:

 <style name="AppTheme.SecondActivity" parent="AppTheme">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowIsTranslucent">true</item>
 </style>

3.为退出的Activity的rootView添加背景色

​ 由于Activity的Background设置为透明,如果不为该Activity设置背景色,会导致前一个Activity的View也能看到,导致一种重叠的视觉效果,所以我们需要为Activity的rootView设置恰当的背景颜色。

android:background="#FFFFFF"

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