ValueAnimation时序图
2022-07-28 08:30:35 40 举报
安卓ValueAnimation原理时序图
作者其他创作
大纲/内容
14.doAnimationFrame()
16.animateBaseOnTime()
9.poastFrameCallback()
18.clampFraction()&getCurrentIterationFraction() (确保上述计算的值在0-1之间)
10.向底层注册监听下一个屏幕刷新信号事件
13-27步骤:每个属性动画在接收到屏幕刷新信号事件之后处理当前帧的动画工作,主要内容是:1.如果是第一-帧,那么去处理一些第一帧工作,主要是mStartTime的计算2.初步计算当前帧的动画进度3.通过插值器的规则进一步计算实际的动画进度4.将动画进度通过关键帧机制映射到所需的数值5.将计算完后的动画进度以及映射后的数值通过进度回调接口通知给外部6.当前帧动画工作处理完毕,如果最后一帧,那么去清理资源,否则重复9-27步骤
24.mAnimatedValue(动画进度值映射到所需的值
IntKeyframeSet
3.ofInt()
13.doAnimationFrame()
7.start()
PropertyValuesHolder
1-6步骤:创建动画的同时也根据参数数童创建对应数量的关键帧组,这些关键帧是用于在最后得到当前帧的0-1区间的动画进度之后映射到所需的数值
8.addAnimationFrameCallback()
向底层注册监听下一个屏幕刷新信号
AnimationHandler
20.fraction=mInterpolator.getInterpolation(fraction) (根据插值器规则计算当前帧实际动画)
21.calculateValue()
6.IntKeyframeSet
ValueAnimator
接收到屏幕刷新信号
2.setIntValue()
26.mUpdateListeners.get(i).onAnimationUpdate()
1.ofInt()
Choreographer
31.重复第12-27步骤
7-12步骤:属性动画如何注册并响应下一个屏幕刷新信号事件
28.postFrameCallback()
Keyframe
23.getIntValue()
27.当前帧的动画工作处理结束
19.animateValue()
12.mFrameCallback.doFrame()
4.ofInt()
17.fractioon=(currentTime - mStartTime)/scaledDuration(计算当前帧的动画进度
KeyframeSet
15.处理第一帧工作
25.addUpdateListener()
5.IntKeyframe
22.getValue()
0 条评论
下一页