在一项活动中,我正在尝试在两个Activities
之间进行自定义转换。我希望当前Activity
缩小到其大小的一半,然后让x值执行缩放转换,使其看起来好像Activity
在3-D中旋转。然后,在动画结束后,我希望在新Activity
上以完全相反的顺序发生相同的动画。
我的问题是,如何在动画中暂停,以便输入Activity
的动画直到退出动画结束后才开始?我必须使用overridePendingTransition
方法,因此所有传递的动画都必须是来自int
的{{1}}值。否则,使用R.anim
会很容易。但我想不出办法来做到这一点。
有什么想法吗?
编辑:我已经弄清楚了,所以你可以查看答案!答案 0 :(得分: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);
这会创建一个平滑,适时的动画,使得看起来好像正在创建的下一个Activity位于当前Activity的“后面”。