1. 动画类型
Android 2.3 及以前的版本支持3种类型动画:逐帧动画、布局动画和视图动画。
逐帧动画:作用对象是系列图片,是通过AnimationDrawable 类来完成逐帧动画;
布局动画:作用对象是某些类型的视图,比如ListView 、GridView,通常是为首次添加布局时增加动画效果。
视图动画:作用对象是任意视图,通过控制用于显示视图的变换矩阵,可以将任意视图制作成动画。
后两者可以统称为:补间动画。
Android 3.0新增的动画方法称为属性动画:它的核心实现方法是随时间不断修改属性值
2.逐帧动画
以很短的间隔时间连续显示一系列图像的简单过程。Android中通过AnimationDrawable 类来完成逐帧动画。
AnimationDrawable类实现动画的方式是:要求容器或视图调用Runnable类,该类实际使用不同的参数集重新绘制Drawable。
在XML中使用animation-list来标记一个逐帧动画,如:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/colored_ball1" android:duration="50"/> <item android:drawable="@drawable/colored_ball2" android:duration="50"/> <item android:drawable="@drawable/colored_ball3" android:duration="50"/> </animation-list>AnimationDrawable 在开始动画前需要将所有图像载入内存。animation-list标记将被转换为AnimationDrawable对象。
3.布局动画
使用布局动画可以向ListView 或者GridView中每个项目的显示方式添加视觉效果。
可以在由ViewGroup派生而来的所有控件上使用这种动画类型。
XML中定义布局动画:
<layout-animation xmlns:android="http://schemas.android.com/apk/res/anroid" android:delay="30%" android:animationOrder="reverse" anroid:animation="@anim/scale"/>然后在XML布局文件中的某个容器控件应用该动画:
<ListView android:... android:layout_animation="@anim/list_layout_controller"/>
4.视图动画
当在Android中显示视图时,它将经历一个变换矩阵的过程,变换矩阵用于以某种方式变换视图
自定义视图动画:
public class ViewAnimation extends Animation{ @Override public void initialize(int width,int height, int parentWidth,int parentHeight){ super.initialize(width,height,parentWidth,parentHeight); setDuration(2500); setFillAfter(true); setInterpolator(new LinearInterpolator()); @Override protected void applyTransformation(float interpolatedTime,Transformation t){ final Matrix matrix = t.getMatrix(); matrix.setScale(interpolatedTime,interpolatedTime); } }动画的主要部分在applyTransformation方法中实现。Android的框架将反复调用此方法来模拟动画。
5.基本的补间动画类型
缩放动画、旋转动画、平移动画、alpha动画。
6.变换矩阵
Matrix类的一些重要方法:
matrix.reset();
matrix.setScale();
matrix.setTranslate();
matrix.setRotate();
matrix.setSkew()://扭曲图像
7.属性动画
新的属性动画包含以下概念:
动画生成器=>Animator
值动画生成器;=>ValueAnimator 、ValueAnimator.AnimatorUpateListener
对象动画生成器;=>ObjectAnimator
动画生成器集合;=>AnimatorSet
动画生成器构建器;=>AnimatorSetBuilder
动画生成器监听器i;=>AnimatorListener
属性值持有者;=>PropertyValuesHolder
类型求值器;=>TypeEvaluataor
关键帧;=> KeyFrame
视图属性动画生成器;
布局转变;
动画生成器XML文件定义。