start()中,会调用
addAnimationCallback(0);
getAnimationHandler().addAnimationFrameCallback(this, delay); //getAnimationHandler()获取到的是AnimationHandler这个单例
getProvider().postFrameCallback(mFrameCallback); //单例中,第一次有动画开始,向Choreography中post一个 FrameCallback
Choreography.FrameCallback mFrameCallback中,判断mAnimationCallbacks>0时,再次向Choreography中post自己mFrameCallback。同时,每次doFrame回调都调一次AnimationHandler.doAnimationFrame(.)
doAnimationFrame()中,会从mAnimationCallbacks中取出所有AnimationFrameCallback,调用它的doAnimationFrame(frameTime),ValueAnimator就是callback。
ValueAnimator.doAnimationFrame(long frameTime);
如果添加了AnimatorUpdateListener,则最后调用到listener的回调onAnimationUpdate
mAnimationCallbacks.add(callback); //保存到ArrayList中