android动画详解三 动画API概述

属性动画与view动画的不同之处


     view动画系统提供了仅动画View 对象的能力,所以如果你想动画非View 对象,你就要自己实现代码。 view动画系统实际上还被强制仅能对 View 的少数属性进行动画,比如缩放和旋转,而不能对背景色进行。

    view动画的另一个坏处是它仅修改View的绘制位置,而不是View的实际位置。例如,如果你动画一个移动穿越屏幕,button的绘制位置变了,但实际你可以点击它的位置却没有变,所以你必须去实现你自己的逻辑来使它们统一。

    使用属性动画系统时,这个限制被完全解除了,并且你可以动画任何对象的任何属性(View或非View)并且对象本身也会实际上被修改。并且属性动画系统本身对动画的支持也更有力度。在高层,你分配动画到要动画的属性上,比如颜色,位置、或大小然后定义动画的参数比如插值算法以及多个动画如何同步等。

    然而,view 动画系统只需要少量时间来设置并且不需要太多的代码。如果view动画完全满足你的需求,或在你的旧代码中能按你想的工作,那么就不需要使用属性动画系统。也有可能在某些情况下需要同时用到这两种动画系统。


API 概览


    你可以在 android.animation找到大部分的属性动画系统的API。因为view动画系统已经在android.view.animation定义了很多插值算法,你也可以在属性动画系统中使用它们。下面的表中描述了属性动画系统的主要组成。

    Animator 类提供了创建动画的基础。你一般不应直接使用此类,因为它仅提供了最少的功能。下面的子类们都是从Animator派生的。

表 1. Animators

描述

ValueAnimator

属性动画的主要基类。它计算要动画的属性的值。它具有所有计算动画的值的核心函数,它包含每次动画的时间信息、是否重复播放、接收更新事件的监听器等参数,还能设置如何计算自定义类型。动画一个属性要做两条:计算动画的值和设置这些值到对象或属性上。ValueAnimator 不负责第二条,所以你必须侦听ValueAnimator对值的更新然后按你的逻辑在修改你要动画的对象。

ObjectAnimator

 ValueAnimator 的一个子类。允许你设置要动画的目标对象和对象的属性。此类会在计算出动画的新值时更新属性。大多数时候你应选择使用ObjectAnimator ,因为用它处理对象的动画更加容易。然而,你某些时候可能想直接使用ValueAnimator ,因为ObjectAnimator 具有很多限制,比如需要对象具有特定的操作器方法。

AnimatorSet

提供了一个控制动画组中动画关系的机制。你可以设置多个动画一起播放、分别播放、或延迟播放。

    Evaluator告诉属性动画系统如何计算某个属性的值。它们跟据Animator 类提供的时间信息,动画的开始值和结束值计算动画的值。属性动画系统提供了以下evaluator:

 

表 2. Evaluator们

Class/Interface

Description

IntEvaluator

计算int 型属性的默认evaluator。

FloatEvaluator

计算float型属性的默认 evaluator

ArgbEvaluator

计算用十六进制值表示的颜色属性的默认evaluator 。

TypeEvaluator

一个允许你创建自己的evaluator的接口。如果你要动画的对象的属性非int, float、或color,你就必须实现TypeEvaluator 接口来定义如何计算对象属性的动画值。如果你想改变处理int, float, 和 color属性的默认行为,你也可以为它们指定自定义的TypeEvaluator 。

 

    时间插值器定义了时间函数如何计算动画的值。例如,你可以指定动画过程是线性的发生,这表示动画均匀的运动;或者指定非线性的时间,例如, 开始时加速,结束时减速。表 3 描述了在android.view.animation中的插值器们。如果现有的插值器不能满足你,你可以实现接口TimeInterpolator 来创建你自己的插值器。

Table 3. 插值器们

类/接口

描述

AccelerateDecelerateInterpolator

中间快两头慢的插值器。

AccelerateInterpolator

一直加速的插值器。

AnticipateInterpolator

先向后再猛向前的插值器。

AnticipateOvershootInterpolator

先向后,再猛向前,超过结束值后再回到结束值的插值器。

BounceInterpolator

最后跳一下的插值器。

CycleInterpolator

重复循环播放的插值器。

DecelerateInterpolator

一直减速的插值器。

LinearInterpolator

定速播放的插值器。

OvershootInterpolator

先猛向前直到超过结束值然后再回到开始值的插值器。

TimeInterpolator

让你能实现自己的插值器的接口。


上一篇:android动画详解二 属性动画原理

下一篇:android动画详解四 创建动画

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值