一,基础动画
基础动画,有四种,分别是平移(Translate)、缩放(Scale)、Rorate(旋转)、Alpha(透明度),对应Android中以下四种。
1,Animation基类
1,基本概念
1,插值器
插值器的作用,是控制动画过程的参数,可以理解为 时间(t)与动画进程(d)的函数,动画仅与后者d相关,进程取值范围0~1f,随时间变化,时间是均匀的t,进程不一定均匀,可能线性或非线性。
2,Matrix
矩阵变化相关,4种基本动画,皆是操控矩阵实现视图的平移、旋转、缩放、淡化
3,Transformation
ViewGroup中保存的字段,
2,动画流程
OK,那么,以TranslateAnimation为例,开启以下
以View#startAnimation为起点,详细讲下动画原理,
1,设置动画,保存在View#mCurrentAnimation成员,
2,触发View#draw流程
跟进setAnimation
1,保存当前动画到View#mCurrentAnimation
2,设置当前动画开始时间,startTime配置duration,以及系统时间流速,Vsync时间点,即可计算出插值器值,
跟进到View#draw
1,在View#draw中,getAnimation拿到先前设置的Animation对象
2,触发applyLegacyAnimation,传入当前drawingTime,返回more
这个返回值more,代表是否有下一帧动画,false则触发AnimationE