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); } |
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种情况太坑爹了。
。
好吧。
被写这块代码的人彻底搞晕了。。。