Android Animation 框架


1. Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果,

不同Activity切换,不同View之间切换,Layout, 显示列表,显示表格都可以使用动画效果


android 2.2之前 Android 中 Animation 资源可以分为两种:
Tween Animation: 对单个图像进行各种变换(缩放,平移,旋转等)来实现动画。
Frame Animation :由一组图像顺序显示显示动画,顺序播放事先做好的图像,如电影。


android 3.0(API level 11)后Animation 增加了property animation.


2.tween animation
tween animation又称view animation,其只能应用与View对象。
View Animation就是一系列View形状的变换,如大小的缩放,透明度的改变,位置的改变,动画的定义既可以用代码定义也可以用XML定义
用xml定义View Animation,放在/res/anim文件夹下,



3. Property Animation
属性动画,这个是在Android 3.0中才引进的,而且是官方建议优先使用的方法,其更灵活,提供更多的特性,而且不像View Animation只能用在view上,属性动画可以即应用于view也可以应用与非view.


Property Animation中,改变的是对象的实际属性,如Button的缩放,Button的位置与大小属性值都改变了。而且Property Animation不止可以应用于View,还可以应用于任何对象。Property Animation只是表示一个值在一段时间内的改变,当值改变时要做什么事情完全是你自己决定的。
在Property Animation中,可以对动画应用以下属性:
Duration:动画的持续时间
TimeInterpolation:属性值的计算方式,如先快后慢
TypeEvaluator:根据属性的开始、结束值与TimeInterpolation计算出的因子计算出当前时间的属性值
Repeat Country and behavoir:重复次数与方式,如播放3次、5次、无限循环,可以此动画一直重复,或播放完时再反向播放
Animation sets:动画集合,即可以同时对一个对象应用几个动画,这些动画可以同时播放也可以对不同动画设置不同开始偏移
Frame refreash delay:多少时间刷新一次,即每隔多少时间计算一次属性值,默认为10ms,最终刷新时间还受系统进程调度与硬件的影响


4. tween animation原理分析


Animation 和 Transformation,这两个类是实现动画的主要的类,Animation 中主要定义了动画的一些属性比如开始时间、持续时间、是否重复播放等,这个类主要有两个重要的函数:getTransformation 和 applyTransformation,在 getTransformation 中 Animation 会根据动画的属性来产生一系列的差值点,然后将这些差值点传给 applyTransformation,这个函数将根据这些点来生成不同的 Transformation,Transformation 中包含一个矩阵和 alpha 值,矩阵是用来做平移、旋转和缩放动画的,而 alpha 值是用来做 alpha 动画的(简单理解的话,alpha 动画相当于不断变换透明度或颜色来实现动画),以上面的平移矩阵为例子,当调用 dispatchDraw 时会调用 getTransformation 来得到当前的 Transformation,所以具体的动画只需要重载 applyTransformation 这个函数即可,
用户可以定义自己的动画类,只需要继承 Animation 类,然后重载 applyTransformation 这个函数。对动画来说其行为主要靠差值点来决定的,比如,我们想开始动画是逐渐加快的或者逐渐变慢的,或者先快后慢的,或者是匀速的,这些功能的实现主要是靠差值函数来实现的,Android 提供了 一个 Interpolator 的基类,你要实现什么样的速度可以重载其函数 getInterpolation,在 Animation 的 getTransformation 中生成差值点时,会用到这个函数。

你可能感兴趣的:(animation)