首页 > 代码库 > 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); } |
1,FillEnable= false时,FillBefore和FillAfter的值将被忽略,此时FillEnable=Flase时和FillBefore= true且FillAfter=true,且FillEnabled=true等价,也就是开始结束都会被fill坑爹。。。
2,FillEnable= true时,FillBefore = true,FillAfter = false
只在第一帧fill
3,FillEnable = true时,FillBefore = false,FillAfter=true
只在最后一帧fill
4,FillEnable = true时,FillBefore = false,FillAfter=false
这个控制也比较坑爹,从变量名理解以为只要FillEnable=false就好,其它当FillEnable=false时又回到第1种情况太坑爹了。。
好吧。被写这块代码的人彻底搞晕了。。。
Android动画FillEnabled、FillBefore、FillAfter理解