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

前端之家收集整理的这篇文章主要介绍了android – 如何在屏幕旋转后禁用/避免片段自定义动画前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚发现每次在Fragment上设置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只是一个什么都不做的动画.祝好运.

猜你在找的Android相关文章