我为片段事务添加了弹出输入和弹出退出动画。单击后退按钮时,我不想播放此动画。有什么办法可以做到这一点吗?
答案 0 :(得分:0)
解决方案很简单,使用setCustomAnimations(int, int)代替setCustomAnimations (int, int, int, int)
弹出后筹码组时不会播放动画。希望它有所帮助。
<强>更新强>
我写过你需要使用的方法。请检查一下。这是一个例子,
transaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
使用带有两个参数的方法而不是四个。前两个参数指定输入动画,而后两个参数指定退出动画。希望你现在明白。
更新2
我已针对您的方案更新了此答案。上一个方法只会在提交前禁用动画,对您没用。因此,如果要在提交后禁用动画,则需要执行更多步骤。我会就此给你详细解答。
第1步
您需要创建一个静态布尔变量来检查何时启用和禁用片段动画
public class FragmentUtils {
public static boolean mDisableFragmentAnimations = false;
}
第2步
您需要覆盖要启用/禁用动画的每个片段的onCreateAnimation()方法,
@Override
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
if (FragmentUtils.mDisableFragmentAnimations) {
Animation a = new Animation() {};
a.setDuration(0);
return a;
}
return super.onCreateAnimation(transit, enter, nextAnim);
}
第3步
每当你需要在没有动画的情况下返回主片段时,只需调用此方法。
public void clearBackStack() {
FragmentUtils.mDisableFragmentAnimations = true;
getSupportFragmentManager().popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
FragmentUtils.mDisableFragmentAnimations = false;
}
这将首先禁用动画,然后从后堆栈中弹出片段并再次打开动画。
我自己尝试过这个解决方案,它对我来说非常有用,请记住你的特殊情况。