当前位置: 首页 > 工具软件 > View Animator > 使用案例 >

创建揭露动画时发生异常“Cannot start this animator on a detached view“

乌灿
2023-12-01

问题的出现

我在 onCreate 中调用了一个 initShowAnim() 方法,该方法为 mImageIv(一个 ImageView) 创建揭露动画:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // ...
        
        initShowAnim();
    }
    
    private void initShowAnim() {
        // ...
        
        mShowAnim = ViewAnimationUtils
                .createCircularReveal(mImageIv, cx, cy, 0f, endRadius); // 抛出异常的语句
        
        // ...
    }

运行后就抛出了该异常:

java.lang.IllegalStateException: Cannot start this animator on a detached view!

问题的解决

将创建揭露动画的语句放在 view.post() 方法中,如下:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // ...
        
        mImageIv.post(new Runnable() {
            @Override
            public void run() {
                initShowAnim();
            }
        });
    }

参考

 类似资料: