首页 > 代码库 > Android动画FillEnabled、FillBefore、FillAfter理解

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;

           }

 

           finalfloat interpolatedTime= mInterpolator.getInterpolation(normalizedTime);

           applyTransformation(interpolatedTime, outTransformation);

       }

 

 

1FillEnable= false时,FillBeforeFillAfter的值将被忽略,此时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种情况太坑爹了。。


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

Android动画FillEnabled、FillBefore、FillAfter理解