Android的图形与图像处理之五 属性动画

本文详细介绍了属性动画的概念及其强大之处,对比补间动画的优势,并讲解了属性动画的关键特性,如持续时间、插值方式、重复次数及行为等。此外,还介绍了属性动画的主要API,包括ValueAnimator、ObjectAnimator和AnimatorSet等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某种程度上说,属性动画是增强版的补间动画,属性动画的强大可提现在如下两方面
  • 属性动画可以定义任何属性变化
  • 补间动画只能对UI组件执行动画,但属性动画几乎可以对任何对象执行动画(不管它是否在屏幕上)
它有如下几方面属性
持续时间
默认300毫秒,通过android:duration指定
动画插值方式
通过android:interpolator指定
动画重复次数
通过android:repeatCount指定
重复行为
指定动画播放结束后,重复下次动画时,是从开始帧开始播放还是逆序播放,android:repeatMode
动画集
可将多个属性动画合并成一组,既可让这组属性动画按次序播放,也可让这组属性动画同事播放。通过<set.../>元素来组合,android:ordering指定该组动画是按次序播放还是同时播放
帧刷新频率
指定每隔多长时间播放一帧,默认为10ms


属性动画的API
  • Animator
  • ValueAnimator 属性动画的主要时间引擎,它负责计算各个帧的属性值。它定义了属性动画的绝大部分核心功能,包括计算各帧的相关属性值,负责处理更新事件,按属性值的类型控制计算规则。
  • ObjectAnimator  它是ValueAnimator的子类,允许程序员对指定对象的属性执行动画。
  • AnimatorSet  它是Animator的子类,用于组合多个Animator,并指定多个Animator是按次序播放,还是同时播放
属性动画由两方面组成:
  1. 计算各帧的相关属性值
  2. 为指定对象设置这些计算后的值
ValueAnimator只负责第一方面的内容
实际应用时ObjectAnimator使用起来更简单,也就更常用
除此之外,属性动画还需要利用一个Evaluator,该工具类控制属性动画如何计算属性值
  • IntEvaluator
  • FloatEvaluator
  • ArgbEvaluator
  • TypeEvaluator
使用ValueAnimator动画可按如下4个步骤:
  1. 调用ValueAnimator的ofInt()、ofFloat()或ofObject静态方法创建ValueAnimator
  2. 调用ValueAnimator的setXxx()设置动画的持续时间、插值方式、重复次数等
  3. 为ValueAnimator注册AnimatorUpdateListener监听器,在该监听器中可以监听ValueAnimator计算出来的值的改变
ValueAnimator animation = ValueAnimator.ofFloat(0f, 1f);
animation.setDuration(1000);
animation.start();

使用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()方法来刷新屏幕显示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值