无法离开活动显示在输入活动上方

时间:2019-08-08 14:40:26

标签: android android-activity android-transitions

我希望我的LoginActivity向上滑动并在其下面露出我的MainActivity,就像您要从卡座顶部滑动卡片一样。退出的Activity应该向上滑动退出,而进入的android:zAdjustment="bottom"应该已经并留在原地。这将通过this question中所述的方式来实现。

使用默认行为,在 API级别24 之前很容易做到,因为离开活动所花费的 Z顺序要比进入活动高。无论出于何种原因,在Android 7.0中都将其更改为完全相反的内容。

this question的回答建议在入口...="top"上使用Activity,在出口Activity上使用activity_out_top.xml以所需的方式对它们进行排序。但是,这似乎在 API 28和29 仿真器上均不起作用。使用上述解决方案时,我看不到过渡动画,因为进入的<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <translate android:fromYDelta="0%" android:toYDelta="-100%" android:duration="1500" android:zAdjustment="top"/> </set> 会接管并完全覆盖退出的动画。如以上答案所示,在几次清理/重建后,这种情况不会改变。

更改完成后,该解决方案是否有可能被破坏了,或者我在这里做错了什么?甚至有可能在当前的API级别上实现这种动画风格吗?

no_animation.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="0%p"
        android:toYDelta="0%p"
        android:duration="1500"
        android:zAdjustment="bottom"/>
</set>

Intent intent = new Intent(this, MainActivity.class); Bundle animate = ActivityOptions.makeCustomAnimation(getApplicationContext(), R.anim.no_animation, R.anim.activity_out_up).toBundle(); startActivity(intent, animate);

Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.no_animation, R.anim.activity_out_up);

我什至尝试以两种不同的方式开始过渡:

{{1}}

{{1}}

1 个答案:

答案 0 :(得分:0)

好的,我一直都错了。解决方案很简单:zAdjustment属性必须在set标记上,而不是translate标记上。如此简单却不容错过。现在,我的退出动画如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:zAdjustment="top">
    <translate
        android:fromYDelta="0%"
        android:toYDelta="-100%"
        android:duration="1500"/>
</set>