【问题标题】:How to disable/avoid Fragment custom animations after screen rotation如何在屏幕旋转后禁用/避免片段自定义动画
【发布时间】:2014-05-25 20:10:45
【问题描述】:

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

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

片段是使用以下动画创建的:

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

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

【问题讨论】:

    标签: android rotation fragment


    【解决方案1】:

    我就是这样处理的

    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 只是一个什么都不做的动画。祝你好运。

    【讨论】:

    • 在 R.anim.none 中指定什么?
    • 我使用 XML alpha 动画,从 1 的 alpha 到 1 的 alpha。
    猜你喜欢
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 2017-04-19
    相关资源
    最近更新 更多