- 属性动画可以定义任何属性变化
- 补间动画只能对UI组件执行动画,但属性动画几乎可以对任何对象执行动画(不管它是否在屏幕上)
持续时间 | 默认300毫秒,通过android:duration指定 |
动画插值方式 | 通过android:interpolator指定 |
动画重复次数 | 通过android:repeatCount指定 |
重复行为 | 指定动画播放结束后,重复下次动画时,是从开始帧开始播放还是逆序播放,android:repeatMode |
动画集 | 可将多个属性动画合并成一组,既可让这组属性动画按次序播放,也可让这组属性动画同事播放。通过<set.../>元素来组合,android:ordering指定该组动画是按次序播放还是同时播放 |
帧刷新频率 | 指定每隔多长时间播放一帧,默认为10ms |
属性动画的API
- Animator
- ValueAnimator 属性动画的主要时间引擎,它负责计算各个帧的属性值。它定义了属性动画的绝大部分核心功能,包括计算各帧的相关属性值,负责处理更新事件,按属性值的类型控制计算规则。
- ObjectAnimator 它是ValueAnimator的子类,允许程序员对指定对象的属性执行动画。
- AnimatorSet 它是Animator的子类,用于组合多个Animator,并指定多个Animator是按次序播放,还是同时播放
- 计算各帧的相关属性值
- 为指定对象设置这些计算后的值
- IntEvaluator
- FloatEvaluator
- ArgbEvaluator
- TypeEvaluator
- 调用ValueAnimator的ofInt()、ofFloat()或ofObject静态方法创建ValueAnimator
- 调用ValueAnimator的setXxx()设置动画的持续时间、插值方式、重复次数等
- 为ValueAnimator注册AnimatorUpdateListener监听器,在该监听器中可以监听ValueAnimator计算出来的值的改变
使用ObjectAnimator创建动画时,因为ObjectAnimator继承了ValueAnimator,因此它可以直接将ValueAnimator在动画过程中计算出来的值应用到指定对象上,无需注册AnimatorUpdateListener监听器 ObjectAnimator animation = ObjectAnimator.ofFloat(foo, “alpha”,0f, 1f); animation.setDuration(1000); animation.start(); 使用ObjectAnimator时需要注意的是:
- 要为该对象的属性提供setter方法
- 如果调用ObjectAnimator的ofInt()、ofFloat()或ofObject()工厂方法时values...参数只提供了一个值,那么该参数会被认为是结束值。那么该对象应该为该属性提供一个getter方法,该getter方法的返回值将被作为开始值
- 如果动画对象是View,为了能显示动画效果,可能还需要在onAnimationUpdate()事件监听方法中调用View.invalidate()方法来刷新屏幕显示