我希望我的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}}
答案 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>