美文网首页
偶发性AlphaAnimation失常、无效、或不执行

偶发性AlphaAnimation失常、无效、或不执行

作者: kongzue | 来源:发表于2019-02-23 15:49 被阅读19次

    问题描述

    偶发性AlphaAnimation失常、无效、或不执行。
    代码一切正确,提前也对view进行了clearAnimation并invalidate,但偶发性不执行。

    排查

    先上原代码:

    //先清除可能缓存的Animation
    view.clearAnimation();
    view.invalidate();
    
    //保证显示状态
    view.setVisibility(View.VISIBLE);
    
    AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);
    alphaAnimation.setDuration(200);
    alphaAnimation.setFillAfter(true);
    alphaAnimation.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {
        }
        @Override
        public void onAnimationEnd(Animation animation) {
            //某些结束后要做的事务
        }
        @Override
        public void onAnimationRepeat(Animation animation) {
        }
    });
    view.startAnimation(alphaAnimation);
    

    运行结果为大多数情况执行正常,但偶发性无效,会不经过动画直接结束,onAnimationEnd正常执行,但未显示任何动画效果。

    解决方法

    建议用属性动画替代。

    上述代码可替换为:

    view.animate().alpha(1).setDuration(200).withEndAction(new Runnable() {
                    @Override
                    public void run() {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                //某些结束后要做的事务
                            }
                        });
                    }
                });;
    

    前人挖坑,后人填坑......

    相关文章

      网友评论

          本文标题:偶发性AlphaAnimation失常、无效、或不执行

          本文链接:https://www.haomeiwen.com/subject/aijpyqtx.html