Android活动转换animation

我想要实现的是: 仅为退出活动启动一个带有过渡animation的新活动。

我想滑动当前的活动,新的活动将落后于当前的活动。

这里是向上滑动animation: R.layout.slide_up

<set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="1000" android:fromYDelta="0%" android:toYDelta="100%" /> </set> 

下面是我如何应用活动animation转换:

 overridePendingTransition ( 0 , R.anim.slide_up ); 

我正在使用0作为input活动,因为我不想为新活动提供任何animation,并且它不工作(不执行animation)。 如果我也使用animation来input活动,它也可以工作(两个animation都被执行),如下所示:

 overridePendingTransition ( R.anim.slide_out , R.anim.slide_up ); 

R.anim.slide_out

 <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="1000" android:fromYDelta="100%" android:toYDelta="0%" /> </set> 

有任何想法吗 ?

我正在使用Android 4.1.2和Android 4.0.4

Solutions Collecting From Web of "Android活动转换animation"

改变您的退出animation,使其在进入的活动之上呈现。

R.anim.slide_up

 <set xmlns:android="http://schemas.android.com/apk/res/android" android:zAdjustment="top"> <translate android:duration="1000" android:fromYDelta="0%" android:toYDelta="100%" /> </set> 

那么你可以做你最初做的设置animation。

 overridePendingTransition ( 0 , R.anim.slide_up ); 

我有完全相同的过渡和这样的animation作品对我来说:

 <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromYDelta="0%" android:toYDelta="100%" android:zAdjustment="top" android:duration="300" /> 

在startActivity之后使用下面的行

 overridePendingTransition(0,0); 

这将覆盖默认的animation,不做animation。 如果你喜欢,你也可以给一些自定义的animation

 overridePendingTransition(R.anim.animation1,R.anim.animation2); 

无论您打电话来启动活动,都需要修改意图。 ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(AlbumListActivity.this); startActivity(intent, options.toBundle());

如果你有任何专门的方法setupTransitions()你可以把下面两行代码放在那里,否则你可以把它们放在onCreate()

 getWindow().setEnterTransition(new Slide(Gravity.RIGHT).setDuration(800)); 

Gravity.RIGHT决定了你想要开始下一个活动的方向。 setDuration()方法是可选的,为了更平滑的过渡,我使用它,你不必。

通过使用不同的重力和setDuration属性来探索更多。