我刚刚发现,每次在片段上 setRetainInstance(true) 时,它都会按预期工作(保留片段数据),但这会导致片段的自定义动画在屏幕旋转后再次执行。
有没有办法避免/禁用屏幕旋转时的这些动画?
该片段是使用以下动画创建的:
setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left,
R.anim.slide_out_right);
所以,我不希望那些“滑动动画”在屏幕旋转时再次执行。
我就是这样处理的
private boolean viewsHaveBeenDestroyed;
@Override
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
// This stops animation on rotation as we have a retained instance.
boolean shouldNotAnimate = enter && viewsHaveBeenDestroyed;
viewsHaveBeenDestroyed = false;
return shouldNotAnimate ? AnimationUtils.loadAnimation(getActivity(), R.anim.none)
: super.onCreateAnimation(transit, enter, nextAnim);
}
@Override
public void onDestroyView() {
super.onDestroyView();
viewsHaveBeenDestroyed = true;
}
其中 R.anim.none 只是一个不执行任何操作的动画。祝你好运。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)