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); } |
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种情况太坑爹了。。
好吧。被写这块代码的人彻底搞晕了。。。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。