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动画详解二 属性动画原理

时间: 2024-10-12 19:18:08

android动画详解三 动画API概述的相关文章

iOS动画详解(学习动画看这一篇就够了)

iOS动画详解(学习动画看这一篇就够了) 一.基础知识 CAAnimation.png 二.CABasicAnimation 1. 动画的属性和解释 2.属性值的解释 repeatCount : 如果在swift中需要一直不断重复:Float.infinity,OC:HUGE_VALF timingFunction: timingFunction.png kCAMediaTimingFunctionLinear--在整个动画时间内动画都是以一个相同的速度来改变.也就是匀速运动.一个线性的计时函数

Android Scroll详解(三):Android 绘制过程详解

作者: ztelur 联系方式:segmentfault,csdn,github 本文转载请注明原作者.文章来源,链接,版权归原文作者所有. ?本篇为Android Scroll系列文章的最后一篇,主要讲解Android视图绘制机制,由于本系列文章内容都是视图滚动相关的,所以,本篇从视图内容滚动的视角来梳理视图绘制过程. ?如果没有看过本系列之前文章或者不太了解相关的知识,请大家阅读一下一下的文章: Android MotionEvent详解 Android Scroll详解(一):基础知识 A

Android图文详解属性动画

Android中的动画分为视图动画(View Animation).属性动画(Property Animation)以及Drawable动画.从Android 3.0(API Level 11)开始,Android开始支持属性动画,本文主要讲解如何使用属性动画.关于视图动画可以参见博文<Android四大视图动画图文详解>. 概述 视图动画局限比较大,如下所述: 视图动画只能使用在View上面. 视图动画并没有真正改变View相应的属性值,这导致了UI效果与实际View状态存在差异,并导致了一

【转】Android编译系统详解(三)——编译流程详解

原文网址:http://www.cloudchou.com/android/post-276.html 本文原创作者:Cloud Chou. 欢迎转载,请注明出处和本文链接 1.概述 编译Android的第三步是使用mka命令进行编译,当然我们也可以使用make –j4,但是推荐使用mka命令.因为mka将自动计算-j选项的数字,让我们不用纠结这个数字到底是多少(这个数字其实就是所有cpu的核心数).在编译时我们可以带上我们需要编译的目标,假设你想生成recovery,那么使用mka recov

Android 布局详解 -三表格布局(TableLayout)以及重要属性

三表格布局(TableLayout)以及重要属性             TableLayout跟TableRow 是一组搭配应用的布局,TableLayout置底,TableRow在TableLayout的上方,而Button.TextView等控件就在TableRow之上,别的,TableLayout之上也可以零丁放控件.TableLayout是一个应用错杂的布局,最简单的用法就仅仅是拖沓控件做出个界面,但实际上,会经常在代码里应用TableLayout,例如做出表格的结果.本文首要介绍Ta

Android Fragment详解(三): 实现Fragment的界面

为fragment添加用户界面: Fragment一般作为activity的用户界面的一部分,把它自己的layout嵌入到activity的layout中. 一个 要为fragment提供layout,你必须实现onCreateView()回调方法,然后在这个方法中返回一个View对象,这个对象是fragment的layout的根.     注:如果你的fragment是从ListFragment中派生的,就不需要实现onCreateView()方法了,因为默认的实现已经为你返回了ListVie

Android ActionBar详解(三):ActionBar实现切换Tabs标签

实现切换Tabs标签; Activity代码: public class ActionBarTabs extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.action_bar_tabs); } public void onAddTab(View v) { final 

Android ActionBar详解(一):ActionBar概述及其创建

在Android 3.0中除了我们重点讲解的Fragment外,Action Bar也是一个重要的内容,Action Bar主要是用于代替传统的标题栏,对于Android平板设备来说屏幕更大它的标题使用Action Bar来设计可以展示更多丰富的内容,方便操控. Action Bar主要功能包含: 1. 显示选项菜单 2. 提供标签页的切换方式的导航功能,可以切换多个fragment. 3. 提供下拉的导航条目. 4. 提供交互式活动视图代替选项条目 5. 使用程序的图标作为返回Home主屏或向

android动画详解四 创建动画

· 使用ValueAnimator进行动画 通过指定一些int, float或color等类型的值的集合,ValueAnimator 使你可以对这些类型的值进行动画.你需通过调用ValueAnimator 的某个工厂方法来获得一个ValueAnimator 对象,比如:ofInt(), ofFloat(), 或 ofObject().例如: ValueAnimator animation = ValueAnimator.ofFloat(0f, 1f); animation.setDuration