片段事务自定义动画分层

时间:2015-01-08 18:41:16

标签: android android-fragments android-animation

我有一个片段替换事务设置如下:

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在动画开始时消失,这不是我想要的。

0 个答案:

没有答案