Android 在转换期间使新活动显示在旧活动的后面

Android 在转换期间使新活动显示在旧活动的后面,android,animation,android-activity,Android,Animation,Android Activity,我试图实现的是覆盖“开始活动”动画 动画应该给人一种旧活动位于新活动之上的印象,然后向下滑出屏幕以显示新活动。我尝试了多种方法,例如使用overridePendingTransition(startAnim,exitAnim) 但问题是,它们都在同一个时间轴上制作动画。因此覆盖结束转换(R.anim.hold,R.anim.exit\u slide\u down)您永远看不到退出动画,因为新活动位于顶部。使用该框架可以实现这一点吗 我一直在尝试在一个示例项目中解决您的解决方案,并使用以下代码实现

我试图实现的是覆盖“开始活动”动画

动画应该给人一种旧活动位于新活动之上的印象,然后向下滑出屏幕以显示新活动。我尝试了多种方法,例如使用
overridePendingTransition(startAnim,exitAnim)
但问题是,它们都在同一个时间轴上制作动画。因此
覆盖结束转换(R.anim.hold,R.anim.exit\u slide\u down)您永远看不到退出动画,因为新活动位于顶部。使用该框架可以实现这一点吗


我一直在尝试在一个示例项目中解决您的解决方案,并使用以下代码实现:

使用以下命令调用动画:

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>  

实际上,我在动画文件中找到了一个名为
android:zAdjustment
的属性

如果我把
android:zAdjustment=“bottom”
放在
hold.xml(屏幕2)中,把
android:zAdjustment=“top”
放在
push\u down\u out.xml(屏幕1)中,那么我就可以得到想要的效果

这绕过了z顺序问题(我认为这是动画计时的问题,所以我找错了方向)


John

适合我的解决方案:

R.anim.退出\u向下滑动\u

<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>

我相信你可以延迟一个动画,但很抱歉没有提供更多帮助。可能的复制。请你包括你的动画文件的样子好吗?这也是为什么我的过渡动画没有播放的原因。作为额外的奖励,我只需将android:zAdjustment=“top”添加到exitanimation(我想在上面玩的那一个),所以您甚至不需要“底部”的一个。@johncc您能提供xml文件和源代码吗?谢谢到处寻找这个答案。好极了!我很高兴我找到了这个。我想我必须使用一个剪辑蒙版来获得这个效果。实际上,如果你给每个动画赋予不同的持续时间,它会给人一种非常酷的印象。例如,对于R.anim.push_down_in:
android:duration=“900”
和R.anim.push_down_out:
android:duration=“1500”
Intent intent = new Intent(activity, SecondActivity.class);
startActivity(intent);
activity.overridePendingTransition(0, R.anim.exit_slide_down);