精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
三类,属性动画复杂,视图动画和可绘制动画简单。
属性绘制:安卓3(API11级)引入,它把任何对象、视图或非视图对象和定制类型对象属性动画化。是优选方式。使用”android.animation”命名空间。
视图绘制:也叫渐变动画。只能用于视图内对象动画,只能实现简单动画,比如移动、重新设计大小和旋转,但不能处理背景色。使用“android.view.animation”
可绘制动画:用于显示已经运行的一系列可绘制的资源,比如图片。使用AnimationDrawable类。
画布:Canvas类
OpenGL ES:可以使用GPU加速。
示例由主Activity、6个子Activity和其它资源。启动页是MainActivity,标题是AndroidAnimation,页内有6个按钮,按钮会导航到其它的子Activity上。
通过修改属性来实现动画效果,比如x坐标,从开始值向结束值过渡,用一定时间,过渡时会调用些函数。
安卓提供ValueAnimator类做为时间引擎,引擎启动和管理整个动画过程。它包含每个动画的细节,比如属性的启动和结束值、动画的持续时间、TimeInterpolator子集(它定义动画的变化率)和TypeEvaluator的子集(定义怎么计算动画值)。
在执行动画时,ValueAnimator计算已渡过的时间和总时间总量的比例,计入到elapsed fraction,从0到1渐变,0代表0%,1代表100%。
对每个计算形成的计时分片,基于TimeInterpolator,ValueAnimator计算出插值碎片。一个TimeInterpolator是一个函数,它定义动画值的变化比率。TimeInterpolator有如下几类:
Callback |
Description |
Graph |
变化比率维持恒定 |
||
变化比率开头和结尾慢,中间快 |
||
开始慢,后面快 |
||
开始快,后面慢.和 "AccelerateInterpolator"相反. |
||
开始向下,接着向上 |
||
冲高回落. |
||
前半段用"AnticipateInterpolator",后半段用"OvershootInterpolator".开始向下,接着向上,冲高回落。 |
||
连贯的一系列跳跃效果。 |
||
循环效果 |
对每个插值部分,ValueAnimator调用合适的TypeEvaluator来计算动画属性值,计算依赖于插值部分、开始值和结束值。安卓为TypeEvaluator提供三个子类和一个接口来创建定制求值器。参考下表来掌握不同的TypeEvaluator.
Class/Interface |
Elaboration |
实现整数类型插值生成 |
|
float类型 |
|
颜色类型 |
|
提供setEvaluator(TypeEvaluator)使用的接口,允许实现定制 |
ValuAnimator常用;但它缺乏赋值。必须写代码来监听值,并把值修改到对象属性上。这也不是必须的机制。可以使用ValueAnimator的子类,即ObjectAnimator。
用它可以设置目标对象和它的动画值。它能计算动画值且更新属性到新值。这个类最常用。
控制多个动画同时动作、按前后过渡动作或在指定延迟后开始时,使用此类。