假设我运行以下代码将片段放入堆栈。它设置了我最初查看片段时以及何时退出片段的动画。
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.slide_left,
R.anim.no_anim,
R.anim.no_anim_show,
R.anim.slide_right_away);
fragmentTransaction.replace(R.id.container, fragment, tag);
fragmentTransaction.addToBackStack(tag);
fragmentTransaction.commit();
如果我想稍后更改退出动画,我该怎么做?如果我有以下代码:
getFragmentManager().popBackStack();
但是我想要一个不同的动画,然后是我最初放入堆栈的动画。
答案 0 :(得分:2)
以下是我尝试过的,并且有效:
getFragmentManager().beginTransaction().setCustomAnimations(
R.anim.slide_left, R.anim.new_anim)
.remove(fragment)
.commit();
所以,看起来我必须明确地删除'新片段事务中的片段,以便使用新的退出动画
答案 1 :(得分:1)
您可以在从后台堆栈中弹出之前更改自定义动画
getFragmentManager().beginTransaction().setCustomAnimations(R.anim.slide_left,
R.anim.no_anim,
R.anim.no_anim_show,
R.anim.new_pop_exit).commit();
并在弹出堆栈
之前执行挂起的事务getFragmentManager().executePendingTransactions();
getFragmentManager().popBackStackImmediate();
注意:popExit动画将在退出操作时播放,特别是在弹出后台时