我有一个片段替换事务设置如下:
CreateGestureFragment frag = new CreateGestureFragment(number, name, type);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.animator.zoom_enter, R.animator.anim_stay, R.animator.anim_stay, R.animator.zoom_exit);
transaction.replace(R.id.fragment_container, frag);
transaction.addToBackStack(null);
transaction.commit();
我的zoom_enter就像这样:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together" >
<objectAnimator
android:propertyName="scaleX"
android:valueFrom="0.5"
android:valueTo="1.0"
android:duration="@android:integer/config_mediumAnimTime">
</objectAnimator>
<objectAnimator
android:propertyName="scaleY"
android:valueFrom="0.5"
android:valueTo="1.0"
android:duration="@android:integer/config_mediumAnimTime">
</objectAnimator>
anim_stay只是一个占位符,没有实际动画(我只是将scaleX从1.0设置为1.0)。用片段B替换片段A的预期行为是:片段B在片段A顶部放大时进入,当弹回时,片段B在缩小时退出并从之前显示片段A.
然而,似乎在替换时,片段A的动画发生在片段B的动画之上,因此动画将被丢失,直到动画完成并且片段B完全显示。问题是,如何将片段B的缩放动画分层放在片段A的顶部,这样我才能看到实际的动画?
我尝试将片段A的动画设置为0,但在这种情况下,虽然我可以看到片段B的缩放输入,但片段A在动画开始时消失,这不是我想要的。