分类

帧动画

主要使用AnimationDrawable,Drawable的子类,可以通过Java代码或者xml文件创建Drawable

xml创建:位于drawable目录下,可以当作普通的drawable使用

  • <animation-list>:图片集合,android:oneshot属性:执行一次
  • <item>android:duration、android:drawable属性

Drawable强制转换为AnimationDrawable类型,然后调用AnimationDrawable.start()方法播放

注:不能在onCreate方法中调用,因为AnimationDrawable还未完全附着到window上,可以在onWindowFocusChanged()方法中调用。

补间动画(视图动画)

  • Java代码创建:

    • TranslateAnimation、ScaleAnimation、RotateAnimation、AlphaAnimation:平移、旋转、缩放、透明
    • AnimationSet:动画集合
  • xml创建:

    • <translate><scale><rotate><alpha><set>标签
    • 通过AnimationUtils.loadAnimation(this, R.anim.*);加载,返回Animation对象。
  • view.startAnimation()播放,或者anim.start();

  • animation.setAnimationListener()设置动画监听

  • 进阶:插值器Interplolator

注:补间动画无不会改变view位置和大小等属性,如点击移动后的位置无法响应事件。

属性动画(3.0以上,API 11)

  • ObjectAnimator、ValueAnimator……

    • //参数:view、动画、开始值、结束值
      ObjectAnimator mObjectAnimator= ObjectAnimator.ofInt(view, "rotationY", 0,  1).setDuration(2000);
      
  • AnimatorSet:动画集合

  • Interplotator:插值器,控制动画速率

  • Evaluator:估值器,根据起始值、结束值和插值计算当前属性值。

Transition

根据开始和结尾的View状态,自动计算。

动画原理

results matching ""

    No results matching ""