在活动之间从底部向上滑动动画

Slide animation from bottom and up between activities

我成功地创建了活动之间的滑动动画,其中新的 activity 从底部向上滑动。问题:向上滑动时,它"pushes"外面的老activity拿走了它的space。我想创建不移动旧 activity 但只是从底部向上滑动到旧 activity 的动画,而旧 activity 静止不动。

slide_in_up.xml:

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromYDelta="100%p"
        android:toYDelta="0" />
</set>

slide_out_down.xml:

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromYDelta="0"
        android:toYDelta="-100%p" />
</set>

用幻灯片开始新 activity 的函数:

override fun startEditProfile() {
    startActivity(EditProfileActivity.newIntent(this))
    overridePendingTransition(R.anim.slide_in_up, R.anim.slide_out_down)
}

是否可以让新的 activity 从底部滑到顶部,而旧的 activity 不动?

查看关于 overridePendingTransition 两个参数的源代码注释:

 @param enterAnim A resource ID of the animation resource to use for
 the incoming activity.  Use 0 for no animation.
 @param exitAnim A resource ID of the animation resource to use for
 the outgoing activity.  Use 0 for no animation.

因此,如果您希望出口(旧)activity 不动,请将出口动画更改为

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="0%"
        android:toXDelta="0%"
        android:fromYDelta="0%"
        android:toYDelta="0%" />
</set>

或设置 0 表示没有动画