我正在尝试使用 FragmentTransaction.setCustomAnimations 实现以下效果。
- 片段 A 正在显示
- 用 Fragment B 替换 Fragment A。在更换过程中,Fragment A 应保持可见。片段 B 应该从右侧滑入。片段 B 应该滑入片段 A 的顶部。
在动画设置中获取幻灯片没有问题。我的问题是我无法弄清楚如何在动画幻灯片运行时使片段 A 停留在原处并位于片段 B 下。无论我做什么,似乎片段 A 都在顶部。
我怎样才能做到这一点?
这是 FragmentTransaction 代码:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_right, R.anim.nothing, R.anim.nothing,
R.anim.slide_out_right);
ft.replace(R.id.fragment_content, fragment, name);
ft.addToBackStack(name);
ft.commit();
如您所见,我为“out”动画定义了一个动画 R.anim.nothing,因为我实际上不希望 Fragment A 做任何事情,而只是在事务期间保持原位。
以下是动画资源:
slide_in_right.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="100%p"
android:toXDelta="0"
android:zAdjustment="top" />
什么都没有.xml
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime"
android:fromAlpha="1.0"
android:toAlpha="1.0"
android:zAdjustment="bottom" />