如何在屏幕旋转后禁用/避免片段自定义动画

Tat*_*rvo 8 android rotation fragment

我刚刚发现每次在Fragment上设置setRetainInstance(true)时它都按预期工作(片段数据被保留),但这会导致片段的自定义动画在屏幕旋转后再次执行.

有没有办法在屏幕旋转时避免/禁用这些动画?

使用以下动画创建片段:

setCustomAnimations(R.anim.slide_in_right,R.anim.slide_out_left,R.anim.slide_in_left,R.anim.slide_out_right);

所以,我不希望在屏幕旋转时再次执行那些"滑动动画".

Min*_*Man 11

这就是我处理它的方式

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;
}
Run Code Online (Sandbox Code Playgroud)

R.anim.none只是一个什么都不做的动画.祝好运.