Android 动画框架详解

1.概述:Android平台提供了两类动画,一类是Tween动画,即通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果;第二类是Frame动画,即顺序播放事先做好的图像,跟电影类似。

2.原理:

现有的Android动画框架是建立在View的级别上的,在View类中有一个接口startAnimation来使动画开始,startAnimation函数会将一个Animation类别的参数传给View,这个Animation是用来指定我们使用的是哪种动画,现有的动画有平移,缩放,旋转以及alpha变换等。

Android动画就是通过ParentView来不断调整ChildView的画布坐标系来实现的,下面以平移动画来做示例,见下图4,假设在动画开始时ChildView在ParentView中的初始位置在(100,200)处,这时ParentView会根据这个坐标来设置ChildView的画布,在ParentView的dispatchDraw中它发现ChildView有一个平移动画,而且当前的平移位置是(100,200),于是它通过调用画布的函数traslate(100,200)来告诉ChildView在这个位置开始画,这就是动画的第一帧。如果ParentView发现ChildView有动画,就会不断的调用invalidate()这个函数,这样就会导致自己会不断的重画,就会不断的调用dispatchDraw这个函数,这样就产生了动画的后续帧,当再次进入dispatchDraw时,ParentView根据平移动画产生出第二帧的平移位置(500,200),然后继续执行上述操作,然后产生第三帧,第四帧,直到动画播完

.

原文:http://www.ibm.com/developerworks/cn/opensource/os-cn-android-anmt1/index.html

示例可参考:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=564

相关推荐