Android动画学习笔记

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动画学习笔记)