我想要实现的是覆盖开始活动动画。
动画应该给人留下旧活动位于新活动之上的印象,然后向下滑动并离开屏幕以显示新活动。我尝试了多种方法,例如使用overridePendingTransition(startAnim, exitAnim)
但问题是他们都在同一时间线上制作动画。所以overridePendingTransition(R.anim.hold, R.anim.exit_slide_down);
您永远不会看到退出动画,因为新活动位于顶部。可以使用框架来实现吗?
答案 0 :(得分:31)
实际上,我在动画文件中找到了一个名为android:zAdjustment
的属性。
如果我将android:zAdjustment="bottom"
放在hold.xml
(屏幕2)和android:zAdjustment="top"
push_down_out.xml
(屏幕1)中,那么我可以获得所需的效果。
这绕过了z顺序问题(我认为这是一个动画时序的问题所以我正在咆哮错误的树)。
约翰
答案 1 :(得分:30)
我一直在尝试在示例项目中解决您的解决方案,并让我使用此代码:
使用以下方法调用动画:
startActivity(new Intent(this, Activity2.class));
overridePendingTransition(R.anim.push_down_in,R.anim.push_down_out);
R.anim.push_down_in:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="-100%p" android:toYDelta="0" android:duration="300"/>
</set>
R.anim.push_down_out:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="300"/>
</set>
答案 2 :(得分:7)
适合我的解决方案:
<强> R.anim.exit_slide_down 强>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:zAdjustment="top">
<translate android:fromYDelta="0"
android:toYDelta="100%p"
android:duration="600" />
</set>
......然后
Intent intent = new Intent(activity, SecondActivity.class);
startActivity(intent);
activity.overridePendingTransition(0, R.anim.exit_slide_down);