本文结合一些周知的概念和源码片段,对View动画的工作原理进行挖掘和分析。以下不是对源码一丝不苟的分析过程,只是以搞清楚Animation的执行过程、如何被周期性调用为目标粗略分析下相关方法的执行细节,最终贯穿View动画实际发生的一切。
View动画使用
Android提供了属性动画(property animation)、帧动画(frame-by-frame animation)和View动画( tweened animation:补间动画),View动画的使用相对简单,但又不像真正意义上的动画那样对View产生有效的影响。
在从某些方面开始分析View动画的工作原理之前,先来回顾一下使用View动画相关的细节。
step 1. 准备Animation对象
可以通过xml或者代码生成一个Animation对象。
通常是建议使用xml来定义动画的,这样有更好的阅读性、独立性和复用性,不过最终的,通过AnimationUtils.loadAnimation()加载一个xml动画以后,得到的就是一个Animation对象。
不同动画对象有它的专有参数需要设置,一般的,需要设置一些所有动画公共的重要属性,对应方法如setFillAfter、setDuration、setRepeatMode和setInterpolator等。
例如下面的代码创建了一个在600ms内沿着Y轴向下移动300像素的位移动画:
TranslateAnimation anim = new TranslateAnimation(0, 0, 0, 300); anim.setDuration(600); anim.setFillAfter(true);
step 2. 执行动画
通常会调用View.startAnimation立即开启动画,它里面
