Android动画FillEnabled、FillBefore、FillAfter理解

fillBefore是指动画结束时画面停留在此动画的第一帧; 默认值为true

fillAfter是指动画结束是画面停留在此动画的最后一帧。默认值为false

但奇葩的是google还加了个FillEnable 变量,这个变量简直坑爹。。。

 

 

源码:

android.view.animation.Animation.java 854

       if ((normalizedTime >= 0.0f || mFillBefore) && (normalizedTime <= 1.0f || mFillAfter)) {

            if (!mStarted) {

                fireAnimationStart();

                mStarted = true;

                if (USE_CLOSEGUARD) {

                    guard.open("cancel or detach or getTransformation");

                }

            }

 

            if (mFillEnabled) normalizedTime = Math.max(Math.min(normalizedTime, 1.0f), 0.0f);

 

            if (mCycleFlip) {

                normalizedTime = 1.0f - normalizedTime;

            }

 

            final float interpolatedTime = mInterpolator.getInterpolation(normalizedTime);

            applyTransformation(interpolatedTime, outTransformation);

        }

 

 

1FillEnable = false 时,FillBefore FillAfter的值将被忽略,此时FillEnable=Flase时和FillBefore = trueFillAfter=true,且FillEnabled=true等价,也就是开始结束都会被fill坑爹。。。

2FillEnable = true时,FillBefore = trueFillAfter = false

只在第一帧fill

3FillEnable = true时,FillBefore = falseFillAfter=true

只在最后一帧fill

4FillEnable = true时,FillBefore = falseFillAfter=false

这个控制也比较坑爹,从变量名理解以为只要FillEnable=false就好,其它当FillEnable=false时又回到第1种情况太坑爹了。。


好吧。被写这块代码的人彻底搞晕了。。。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。