您需要从链接的问题中定义“向上滑动”动画,以及一些反转该过程的新“向下滑动”动画。
要查看的动画的重要部分是fromYDelta
和toYDelta
值。这些定义了动画开始和结束时的 Y 位置(视图顶部)。
slide_in_up.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="100%p"
android:toYDelta="0%p" />
slide_out_up.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="0%p"
android:toYDelta="-100%p" />
slide_in_down.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="-100%p"
android:toYDelta="0%p" />
slide_out_down.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_longAnimTime"
android:fromYDelta="0%p"
android:toYDelta="100%p" />
对于“向上滑动”动画,您应该在您的onResume()
方法中覆盖待处理的转换,如下所示:
protected void onResume()
{
super.onResume();
overridePendingTransition(R.anim.slide_in_up, R.anim.slide_out_up);
}
对于“向下滑动”动画,在您的onPause()
方法中执行类似的操作:
protected void onPause()
{
super.onPause();
overridePendingTransition(R.anim.slide_in_down, R.anim.slide_out_down);
}
一些教程建议使用错误的生命周期方法:
onCreate()
每次显示活动时都不会调用
onDestroy()
每次活动被带走时都不会调用
而是使用每次出现屏幕转换时调用的方法:
onResume()
在向用户显示活动时调用
onPause()
当活动将被带走时被调用
有关这些方法的详细信息,请查看 Android 开发者网站:
当您的屏幕显示时,它会从底部滑入。
当显示新屏幕时,您的屏幕将向下滑动。