在转换期间,使新活动显示在旧活动之后

时间:2012-02-15 13:38:35

标签: android animation android-activity

我想要实现的是覆盖开始活动动画。

动画应该给人留下旧活动位于新活动之上的印象,然后向下滑动并离开屏幕以显示新活动。我尝试了多种方法,例如使用overridePendingTransition(startAnim, exitAnim) 但问题是他们都在同一时间线上制作动画。所以overridePendingTransition(R.anim.hold, R.anim.exit_slide_down);您永远不会看到退出动画,因为新活动位于顶部。可以使用框架来实现吗?

enter image description here

3 个答案:

答案 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);