【发布时间】:2019-08-08 14:40:26
【问题描述】:
我希望我的LoginActivity 向上滑动并在其下方显示我的MainActivity,就像从牌堆顶部滑出一张卡片一样。退出的Activity 应该向上滑动退出,进入的应该已经存在并保持在原位。这将通过this question 中描述的方式实现。
在 API 级别 24 之前使用默认行为很容易做到,因为离开活动的 Z 顺序 比进入活动要高。无论出于何种原因,这在 Android 7.0 中被更改为完全相反的内容。
this question 的答案建议在输入时使用 android:zAdjustment="bottom" 并在退出时使用 ...="top" Activity 以按所需方式订购它们。但是,这似乎不适用于 API 28 和 29 模拟器。使用上述解决方案时,我看不到过渡动画,因为输入 Activity 接管并完全覆盖了退出动画。按照上述答案的建议,经过几次清理/重建后,这不会改变。
在更改完成后,此解决方案是否可能在某处被破坏,或者我在这里做错了什么?是否有可能在当前的 API 级别上实现这种风格的动画?
activity_out_top.xml:
<?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>
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);
【问题讨论】:
标签: android android-activity android-transitions