美文网首页
Android动画原理分析(一)---补间动画

Android动画原理分析(一)---补间动画

作者: 码上修行 | 来源:发表于2019-07-12 21:57 被阅读0次

    1、基本特点

    补间动画(Tween动画),是android最早的动画框架,从Android1.0开始就有。

    功能:可以实现移动、旋转、缩放、渐变四种效果以及这四种效果的组合形式。

    实现形式:xml和代码。

    优点:使用简单效果流畅。

    缺点:1、扩展性差,不支持自定义view;
    2、动画只改变控件在屏幕的位置,不改变控件的实际属性。典型例子:Button执行完动画移动到另外位置,点击事件还在原来的地方。

    2、设计原理:

    虽然补间动画有点古老,但是他的设计思想挺值得分析和借鉴的。这一块的源代码位于package android.view.animation

    下图是补间动画的主体类图:

    图1-补间动画UML类图

    动画的状态数据存在Transformation类中,主要的两个成员是mAlpha用了描述渐变效果和Matrix用来描述缩放旋转和平移效果。

    通过AnimationUtils可以加载xml描述的动画或者通过调用构造函数生成需要的动画

    动画的中间值则是由TimeInterpolator子类通过各种算法插值得出。

    而Animation和Interpolator是由AnimationUtils加载xml或者通过默认值创造出来。

    整个补间动画模块是在View绘制时嵌入的,下图是简要的时序图:

    图1-调用时序图

    VIew的绘制过程是很复杂的,这里只是介绍了一下调用补间动画模块的一个过程,如果有兴趣可以自己查看Android源码。上图箭头上是函数方法名。

    3、使用指南

    这一块有很多人都写过,也写的很好。这里推荐一篇

    Android高级动画(1)

    4、总结

    (1)通过看源码可以彻底明白补间动画的优缺点,实现原理及设计思路;

    (2)只能实现平移、缩放、旋转、渐变的原因是这一套框架中的元数据Transformation 只保存了alpha和一个描述几何变换的矩阵。

    (3)不支持自定义view的原因是动画模块的调用起点在viewgroup

    
    /**
    
    * This method is called by ViewGroup.drawChild() to have each child view draw itself.
    
    *
    
    * This is where the View specializes rendering behavior based on layer type,
    
    * and hardware acceleration.
    
    */
    
    boolean draw(Canvas canvas, ViewGroup parent, long drawingTime) {}
    
    

    相关文章

      网友评论

          本文标题:Android动画原理分析(一)---补间动画

          本文链接:https://www.haomeiwen.com/subject/xfrukctx.html