在使用片段转换中的动画时,它运行得很好,但我会看到下一个屏幕的闪烁,这让我很烦恼。我已经搜索了2天,但没有进展。
我正在使用以下代码进行过渡:
public void moveToBaseSelect() {
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.setCustomAnimations(R.anim.enter_from_right,R.anim.exit_to_left,R.anim.enter_from_left,R.anim.exit_to_right);
ft.replace(R.id.home_frame, new BaseSelectFragment(), HomeActivity.BASE_SELECT);
ft.addToBackStack(HomeActivity.BASE_SELECT);
ft.commit();
}
public void moveToLogin()
{
if(fragmentManager.getBackStackEntryCount()>=1 && fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount()-1).getName().equals(HomeActivity.LOGIN))
return;
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.setCustomAnimations(R.anim.enter_from_right,R.anim.exit_to_left,R.anim.enter_from_left,R.anim.exit_to_right);
ft.replace(R.id.home_frame, new LoginFragment(), HomeActivity.LOGIN);
ft.addToBackStack(HomeActivity.LOGIN);
ft.commit();
}
动画文件
从左侧进入
<set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fillAfter="true"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="-100%p"
android:toXDelta="0%p" />
</set>
</set>
从右侧进入
<?xml version="1.0" encoding="utf-8"?>
<set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fillAfter="true"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="100%p"
android:toXDelta="0%p" />
</set>
</set>
向左退出
<?xml version="1.0" encoding="utf-8"?>
<set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fillAfter="true"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="0%p"
android:toXDelta="-100%p" />
</set>
</set>
退出向右
<?xml version="1.0" encoding="utf-8"?>
<set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="500"
android:fillAfter="true"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="0%p"
android:toXDelta="100%p" />
</set>
</set>
我已经尝试了一种替代方法,使用动画师(animator)而不是anim以及使用app.fragment而不是v4.fragment
但是我非常好奇,如果我坚持使用anim方法,是否有任何解决方案?