我想通过动画在 Activity 中交换两个 fragment 。假设 PageA 用于 fragment A 和屏幕左侧,而 PageB 用于 fragment B,即屏幕右侧。现在我希望当我单击 pageA 上的按钮时,PageA 将通过一些过渡动画移动到屏幕的右侧。
我尝试了下面的代码来替换位置
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container, new FragB());
fragmentTransaction.commit();
寻找线索。
提前致谢。
最佳答案
老问题,您可能已经想通了,但供将来引用:
当您通过代码替换 fragment 时,您可以使用以下方法设置自定义动画:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
ft.replace(R.id.fragment_container, newFragment, "fragment");
// Start the animated transition.
ft.commit();
以下是 slide_in_left 动画的示例:
<?xml version="1.0" encoding="utf-8"?>
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="-100%"
android:toXDelta="0"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="500"/>
</set>
请注意,如果您使用的是兼容性库,则这是动画。相反,如果您使用的是原生支持 FragmentManager 的 SDK,那么您的动画将如下所示:
<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="x"
android:valueType="floatType"
android:valueFrom="-1280"
android:valueTo="0"
android:duration="500"/>
</set>
这是因为兼容性库不支持新的 objectAnimator 类型,而只实现了旧的动画框架。
关于android - 通过动画交换 Activity 中的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8876126/