2012-02-07 47 views
2

在一个活动中,我试图在两个Activities之间进行自定义转换。我希望当前的Activity缩小到其大约一半的大小,然后让x值执行缩放转换,看起来好像Activity以3-D旋转。然后,在动画结束之后,我想要以完全相反的顺序在新的Activity上发生相同的动画。Android活动转换顺序

我的问题是,我该如何在动画中暂停动画,以便输入Activity的动画在退出动画结束之后才会启动?我必须使用overridePendingTransition方法,所以传递的所有动画必须为int,值为R.anim。否则,使用AnimationListener将很容易。但我想不出一个办法。

任何想法?

编辑:我已经知道了,所以你可以检查出答案!

+1

由于您找到了自己的答案,请将您的编辑移至答案,然后接受答案。这对你和社区非常有帮助。 :) – 2012-06-10 23:28:02

回答

4

对于那些试图完成同样事情的人,我想通了。秘诀是在XML中使用android:startOffset。代码如下:

退出动画:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <scale 
     android:fromXScale="1.0" android:toXScale="0.8" 
     android:fromYScale="1.0" android:toYScale="0.8" 
     android:pivotX="50%p" android:pivotY="50%p" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:duration="100" /> 
    <scale 
     android:fromXScale="1.0" android:toXScale="0.0" 
     android:fromYScale="1.0" android:toYScale="1.0" 
     android:pivotX="50%p" android:pivotY="50%p" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:duration="150" 
     android:startOffset="100" /> 
</set> 

入口动画:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <scale 
     android:fromXScale="0.0" android:toXScale="1.0" 
     android:fromYScale="1.0" android:toYScale="1.0" 
     android:pivotX="50%p" android:pivotY="50%p" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:duration="150" 
     android:startOffset="250" /> 

    <scale 
     android:fromXScale="0.8" android:toXScale="1.0" 
     android:fromYScale="0.8" android:toYScale="1.0" 
     android:pivotX="50%p" android:pivotY="50%p" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:duration="100" 
     android:startOffset="400" /> 
</set> 

那么Java代码:

startActivity(new Intent(this, YourNextActivity.class)); 
overridePendingTransition(R.anim.enter_anim, R.anim.exit_anim); 

这将创建一个光滑,使得看起来好像正在创建的下一个活动位于当前活动的“背面”上。