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方法,刷新屏幕进入下一帧;若为假,说明动画完成。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。