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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21700489/article/details/51175482


先放图(顺便吐槽一下,ubuntu下想录制gif还真是麻烦......)

                                      :

只需创建一个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后面

                            


猜你喜欢

转载自blog.csdn.net/qq_21700489/article/details/51175482