Make new activity appear behind old one during tra

2019-01-07 06:05发布

What I'm trying to achieve is to override the start activity animation.

The animation should give the impression that the old activity is on top of the new activity, and then slides down and out of the screen to reveal the new activity. I've tried multiple ways such as using overridePendingTransition(startAnim, exitAnim) But the problem is they both animate in the same timeline. So overridePendingTransition(R.anim.hold, R.anim.exit_slide_down); You never see the exit animation because the new activity is on top. Can this be achieved using the framework?

enter image description here

3条回答
仙女界的扛把子
2楼-- · 2019-01-07 06:32

The solution that works for me:

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>

...and then

Intent intent = new Intent(activity, SecondActivity.class);
startActivity(intent);
activity.overridePendingTransition(0, R.anim.exit_slide_down);
查看更多
forever°为你锁心
3楼-- · 2019-01-07 06:40

I've been trying to solve your solution in a sample project and I got it working with this code:

Call the animation with:

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>  
查看更多
倾城 Initia
4楼-- · 2019-01-07 06:46

Actually, I've found a property called android:zAdjustment in the animation files.

If I put android:zAdjustment="bottom" in hold.xml (screen 2) and android:zAdjustment="top" in push_down_out.xml (screen 1) then I can get the desired effect.

This gets around the z order issue (I assumed it was an issue with animation timings so I was barking up the wrong tree).

John

查看更多
登录 后发表回答