如何在动画中使进入片段显示在退出片段之上。

6
我想实现的效果是在退出(旧)片段上方叠加输入(新)片段,但是当我用新片段替换旧片段时,旧片段只会消失,新片段会向容器上滑动,容器是可见的。
我不想对旧片段进行动画处理,只想保持旧片段的原样,并在其可见的情况下将新片段向上滑动到其上方。
以下是我的代码:
// First time adding fragment i.e. "oldFragemnt"
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, oldFragment, "oldFragemnt");
ft.addToBackStack(null);
ft.commit();

// while adding "newFragemnt"
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.new_slide_in_up,0,0,R.anim.new_slide_out_down);                                   
ft.replace(R.id.content_frame, newFragment, "newFragemnt");
ft.addToBackStack(null);
ft.commit();

请指导我哪里出了问题。我的旧碎片正在消失,而新碎片正在向上滑动。


1
你想要像这样吗? - SweetWisher ツ
你必须添加两个片段,而不是替换,因为名称本身就表明它正在替换,这就是为什么你的旧片段被删除的原因。 - Surender Kumar
这是正确的解决方案! - wudizhuo
这个解决方案适用于我。 - wudizhuo
2个回答

1
你可以尝试使用add()方法替换replace()方法,以达到你想要的效果。希望这能对你有所帮助。

0
新的片段应该有一个像这样的进入动画(你可能已经在做了): enter.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >

<translate
    android:duration="400"
    android:fromXDelta="90%"
    android:fromYDelta="0%"
    android:toXDelta="0%"
    android:toYDelta="0%"
    android:zAdjustment="top" />

旧的片段应该像hold一样保持在原地。 hold.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >

<translate
    android:duration="400"
    android:zAdjustment="bottom" />


仍然看不到我的旧片段。 - Dory
我不希望旧的片段(fragment)进行动画效果,而是应该在新片段(fragment)上滑动之前一直可见。 - Dory

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接