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

本文解决了一个在Android应用中常见的问题,即在onCreate方法中直接启动View动画导致的Cannot start this animator on a detached view!异常。通过将动画创建代码放入view.post()方法中,确保了动画在视图附加到窗口后才开始执行,有效避免了异常。
摘要由CSDN通过智能技术生成

问题的出现

我在 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();
            }
        });
    }

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值