Android动画的实现原理

1.动画运行模式

    独行模式

    中断模式

2.Animation类

   每个动画都重载了父类的applyTransformation方法这个方法的主要作用是把一些属性组装成一个Transformation类,这个方法会被父类的getTransformation方法调用。另外每个动画还有个initialize方法,完成初始化工作,动画开始前的一些准备工作。

3.Interpolator类

    定义动画执行过程一些加速度减速度,为了我们后面Transformation来服务的。

4.Transformation类

    Transformation记录了仿射矩阵Matrix,动画每触发一次,会对原来的矩阵做一次运算,View的Bitmap与这个矩阵相乘就可以实现相应的操作(旋转、平移、缩放等)。

   Transformation类封装了矩阵和alpha值,它有两个重要的成员,一是mMatrix,二是mAlpha(控制透明度)。

5.View中实现动画的过程

   图形变换通过矩阵实现。图形变换是图形学中基本知识。简单来说就是,每种变换都是一次矩阵运算。在Android中,Canvas类包含当前矩阵,当前调用Canvas.drawBitmap(bm,x,y,Paint)绘制时,android会先把bmp做一次矩阵运算,然后将运算结果显示在Canvas上。这样编程人员只需不断修改Canvas的矩阵并刷新屏幕,View里对象就会不停的做图形变换,动画就形成了。

    View创建动画对象,设置动画属性,调用invalidate刷新屏幕,启动动画;

    invalidate方法触发了onDraw函数;

   在onDraw函数中:

   调用动画的getTransformation方法,得到当前时间点的矩阵

   将该矩阵设置成Canvas的当前矩阵

   调用canvas的drawBitmap方法,绘制屏幕。

   判断getTransformation的返回值,若为真,调用invalidate方法,刷新屏幕进入下一帧;若为假,说明动画完成。

  

你可能感兴趣的:(编程,android,化工,图形,Matrix,transformation)