【问题标题】:Make new activity appear behind old one during transition在过渡期间使新活动出现在旧活动后面
【发布时间】:2012-02-15 13:38:34
【问题描述】:

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

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

【问题讨论】:

标签: android animation android-activity


【解决方案1】:

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

如果我将android:zAdjustment="bottom" 放入hold.xml(屏幕2)和android:zAdjustment="top" 放入push_down_out.xml(屏幕1),那么我可以获得所需的效果。

这解决了 z 顺序问题(我认为这是动画时间问题,所以我找错了树)。

约翰

【讨论】:

  • 能否请您提供您的动画文件的外观?
  • 这也是我的过渡动画没有播放的原因。作为额外的奖励,我只需将 android:zAdjustment="top" 添加到 exitanimation(我想在上面播放的那个),所以你甚至不需要“底部”那个。
  • @johncc 你能包括xml文件和源代码吗?谢谢!
  • 到处寻找这个答案。太棒了!
  • 我很高兴找到了这个。我以为我将不得不使用剪贴蒙版来获得这种效果。
【解决方案2】:

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

调用动画:

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>  

【讨论】:

  • 实际上,如果你为每个动画指定不同的持续时间,它会给人非常酷的印象。例如对于 R.anim.push_down_in:android:duration="900" 和对于 R.anim.push_down_out:android:duration="1500"
【解决方案3】:

适合我的解决方案:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    相关资源
    最近更新 更多