1、res/anim下的动画文件fragment_left
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially" >
<translate
android:duration="300"
android:fromXDelta="-300"
android:toXDelta="0" />
</set>
fragment_out
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially" >
<alpha
android:duration="300"
android:fromAlpha="1.0"
android:toAlpha="0.0"
/>
</set>
2、在代码切换中
FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.fragment_in, R.anim.fragment_out;//放在replace之前
fragmentTransaction.replace(R.id.ll_root_fragment, fragment);
fragmentTransaction.commit();
3、在多个fragment的动画切换中会出现
java.lang.IllegalStateException: No host异常
在fragment中重写如下方法可以解决
@Override
public void onDetach() {
super.onDetach();
try {
Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager");
childFragmentManager.setAccessible(true);
childFragmentManager.set(this, null);
} catch (NoSuchFieldException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}