美文网首页
Android动画学习笔记

Android动画学习笔记

作者: ThinkerHu | 来源:发表于2016-04-17 17:32 被阅读118次

    Android动画分类:

    1.View动画

    2.帧动画

    3.属性动画

    其中帧动画属于View动画中的一种。

    一.View动画

    1.通过对场景里的对象做图形变化(Translate,Scale,Rotate,Alpha)来产生一种动画效果,实际作用的View位置,大小等不会跟随变化。

    2.view的四种动画:

    TranslateAnimation,ScaleAnimation,RotateAnimation,AlphaAnimation,继承与Animation

    3.View动画实现方式:

       xml实现:

             对应根节点:alpha,translate,scale,rotate以及组合set

              通过AnimationUtils的loadAnimation方法加载

       代码实现:

            常用类:TranslateAnimation,ScaleAnimation,RotateAnimation,AlphaAnimation,    AnmationSet

       关键属性:interpolator插值器,控制动画速度,例如匀速,加速再减速,减速再加速等,可以自定义

    4.自定义View动画:

       继承Animation,重载applyTransformation方法

    5.LayoutAnimation

      (1). 作用于ViewGroup,添加这个属性之后ViewGroup在子View出场的时候会显示这个动画,例如给ListView指定LayoutAnimation

      (2).实现方式:

          xml:android:animation="@anim/xxx"

          code:targetViewGroup.setLayoutAnimation(layoutAnimatio);

    二.帧动画

    简单说就是顺序播放一连串图片,达到动画效果,对于通过代码实现起来很麻烦的动画效果可以使用帧动画实现,尽量少用,不然会包会很大,而且占用内存。

    实现方式:

    xml:animation-list 指定item

    code:AnimationDrawable

    三.属性动画

         1.API11以后引入,可以对任何对象做动画,其实就是改变对象的属性值而达到一种视觉的动画效果,也可以单纯的改变值,通过监听值得变化做一些相应的操作。

        关键类:ValueAnimator,ObjectAnimator,AnimatorSet

        对应的xml节点:animator,objectAnimator,set

    2.插值器(Interpolator)和估值器(TypeEvaluator)

      插值器:控制当前动画的百分比,常用的插值器有TimeInterpolator(时间插值器),LinearInterpolator(线性插值       器),AcceletateDecelerateInterpolator(加速减速插值器),

        估值器:通过插值器提供的百分比,以及动画设定的最大值和最小值来计算当前的值。

    3.属性动画监听器

    AnimatorUpdateListener:动画更新的时候触发,可以在动画的过程中做一些特殊处理

    AnimatorListener:监听动画的开始,结束,取消和重复几个事件。

    4.属性动画虽然可以多任意对象进行动画,但是要真正有效需要满足一定条件:

       (1).对象提供了属性的set和get方法,set方法用于改变对象的属性值,而get方法用户在没有设置属性动画的默认值的时候获取默认值

       (2).对象的set方法所做的改变必须能通过某种方式展现出来,比如UI上的变化等。

    5.针对上面中的set和get方法,如果有的对象没有提供相应的方法的解决方案(官方提供)

    (1).如果有权限的话给对象加上set和get方法

    (2).用一个类来包装原始对象,间接提供set和get方法

    (3).采用ValueAnimator,监听动画过程,自己实现属性的改变。

    总结一下属性动画的工作原理:

    根据传递的初始值和最终值,以及动画的参数,计算动画中的属性值,通过set方法赋值,达到动画效果。

    相关文章

      网友评论

          本文标题:Android动画学习笔记

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