android动画具体解释二 属性动画原理

property动画是一个强大的框架,它差点儿能使你动画不论什么东西。

你能够定义一个动画来改变对象的不论什么属性,不论其是否被绘制于屏幕之上。

一个属性动画在一定时间内多次改变一个属性(对象的一个字段)的值。要动画某个东西。你需指定对象的目标属性。比方位置,动画的持续时间。和改变的值的范围。

属性动画系统同意你指定下面动画属性:

· Duration: 动画持续时间。

默认是300 ms.

· Time interpolation: 你能够指定一个函数来定义怎样跟据当前的时间计算属性的值。

· 反复次数和行为: 你能够指定是否当动画结束时又一次開始以及反复的次数。你还是能够指定是否让动画倒着播放。设置动画倒着播放使得动画先正播再倒播这样反复进行。直到到达所限制的反复次数。

· 动画集: 你能够将多个动画在逻辑上放到一个组中一起播放或依次播放或按指定的延迟时间播放。

· Frame refresh delay: 你能够指定动画的帧刷新频率。默认是设置为10 ms。可是你的应用能刷新帧的实际速度终于决定于系统的忙碌程度和系统执行后台代码的速度。

· 属性动画怎样工作

首先,我们用一个样例来大体了解一下一个动画怎样工作。下图描写叙述了某个对象要动画其x属性。这代表它的横向位置。动画持续时间被设置为40 ms而且其动画距离被设置为40 像素。每10 ms移动10像素。在40ms后,动画停止。对象停在了40的位置上。

这是一个使用线性插值的对象,表示对象匀速移动。

图 1. 线性动画的样例

你也能够使用非线性插值的动画。下图演示了一个開始加速,最后减速的动画。对象还是在40秒内移动40像素,可是是非线性的。

開始加速到半路然后减速直到最后。就像下图所看到的。開始和结束时移动的距离比中间移动的距离短。

图 2. 非线性动画的样例

让我们细致看一下属性动画系统是怎样计算上图所看到的的动画的重要部分的。

下图演示了主要类之间怎样相互操作。

Figure 3. 动画是怎样计算的

ValueAnimator 对象保持追踪动画的时间,比方动画已执行了多长时间,以及属性的当前值。

ValueAnimator 封装了一个TimeInterpolator, 它定义了动画插值算法,还封装了一个TypeEvaluator,它定义了怎样去计算属性的值。比如,在图2中,使用的TimeInterpolator是 AccelerateDecelerateInterpolator 而且使用的TypeEvaluator 是IntEvaluator.

要開始一个动画,需创建一个ValueAnimator 然后告诉它所要动画的属性的開始和结束的值,还有动画持续的时间。当你调用start() 时,动画就開始了。在动画进行期间。ValueAnimator 跟据动画的持续时间和已经过的时间,计算出一个表示进度的比例的分数(0和1之间),进度分数代表了动画已进行的时间的百分比,0代表0%,1代表100%。

比如,图1中进度分数 在t = 10 ms时值为.25,由于总时间是t = 40 ms。

当ValueAnimator 计算完毕一个进度分数,它就调用TimeInterpolator 去计算一个插值分数。插入分数结合所设置的时间插值把进度分数映射到一个新的分数。比如。在图2中,由于动画缓慢加速,在 t = 10 ms时。插值分数为.15,小于进度分数为.25。在图1中,插值分数进度分数永远相等。

当计算插值函数时。ValueAnimator 会调用适当的TypeEvaluator来基于插值函数、開始值、结束值计算你在动画的属性的值。

比如,在图2中,插值函数值在 t = 10 ms时为.15 。所以些时属性的值将是.15 X (40 - 0)。或6。

上一篇:android动画具体解释一 概述

下一篇:android动画具体解释三 动画API概述

Android非常多时候要用NDK开发,对于C语言不是非常熟悉的小伙伴,能够看一下本人录制的视频教程:http://edu.csdn.net/course/detail/2057

希望对你们有所帮助!

时间: 2024-10-09 13:16:18

android动画具体解释二 属性动画原理的相关文章

Android 动画详解之属性动画(Property Animation)(下)

Hello,大家好,最近好长时间没有写博客了,因为我决定辞职了. 废话不多说,我们还是来看属性动画在上一篇Android 动画详解之属性动画(Property Animation)中我们简单的介绍了一下属性动画的用法,其实属性动画还有更多有趣的用法. 1,在xml中使用 在eclipse中我们右键新建xml可以选择新建属性动画,如图 我们选择objectAnimator,然后我们就会看到熟悉的一幕 然后我们用智能提示就可以看到更熟悉的 没错,这下我们应该知道怎么用xml布局来写属性动画了吧 <s

iOS动画开发之二——UIView动画执行的另一种方式

iOS动画开发之二--UIView动画执行的另一种方式 上一篇博客中介绍了UIView的一些常用动画,通过block块,我们可以很方便简洁的创建出动画效果:http://my.oschina.net/u/2340880/blog/484457,这篇博客再介绍一种更加传统的执行UIView的动画的方法. 这种方式相比如block的方式,显得要麻烦一些,apple官方也推荐我们使用带block的创建动画的方式,我们可以将编程重心更多的放在动画逻辑的实现上.使用begin和commit方式主要分为三个

android动画具体解释四 创建动画

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

Android 动画详解之属性动画(Property Animation)

转载请注明http://blog.csdn.net/u014163726/article/details/41210951 前文也提到过Android 3.0以后引入了属性动画,属性动画可以轻而易举的办到许多View动画做不到的事,今天我们就来学习一下属性动画. 前文提到过View动画只是改变了View的绘制效果,而属性动画则是真正的改变一个属性,效果如下图. 对比Android 动画详解之View动画我们可以看到明显的区别,那么属性动画究竟是怎么用的呢,莫慌,接下来代码奉上. 1,Object

Android自定义view教程03---Android 属性动画 详解

1 package com.example.donghuatest; 2 3 import android.animation.ObjectAnimator; 4 import android.animation.PropertyValuesHolder; 5 import android.animation.ValueAnimator; 6 import android.animation.ValueAnimator.AnimatorUpdateListener; 7 import andro

android 动画(3)属性动画

属性动画 * 1.创建ValueAnimator 对象 设置开始位置和结束位置 * 2.设置监听事件(获取变化的值,将数值设置到控件中) * 3.设置时间 * 4.开始动画,调用start方法 属性动画

Android图文具体解释属性动画

Android中的动画分为视图动画(View Animation).属性动画(Property Animation)以及Drawable动画.从Android 3.0(API Level 11)開始.Android開始支持属性动画,本文主要解说怎样使用属性动画. 关于视图动画能够參见博文<Android四大视图动绘图文具体解释>. 概述 视图动画局限比較大.例如以下所述: 视图动画仅仅能使用在View上面. 视图动画并没有真正改变View相应的属性值,这导致了UI效果与实际View状态存在差异

Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43536355 大家好,在上一篇文章当中,我们学习了Android属性动画的基本用法,当然也是最常用的一些用法,这些用法足以覆盖我们平时大多情况下的动画需求了.但是,正如上篇文章当中所说到的,属性动画对补间动画进行了很大幅度的改进,之前补间动画可以做到的属性动画也能做到,补间动画做不到的现在属性动画也可以做到了.因此,今天我们就来学习一下属性动画的高级用法,看看如何实现一些补间动画

Android(java)学习笔记264:Android下的属性动画高级用法(Property Animation)

1. 大家好,在上一篇文章当中,我们学习了Android属性动画的基本用法,当然也是最常用的一些用法,这些用法足以覆盖我们平时大多情况下的动画需求了.但是,正如上篇文章当中所说到的,属性动画对补间动画进行了很大幅度的改进,之前补间动画可以做到的属性动画也能做到,补间动画做不到的现在属性动画也可以做到了.因此,今天我们就来学习一下属性动画的高级用法,看看如何实现一些补间动画所无法实现的功能. 2. ValueAnimator的高级用法: 在上篇文章中介绍补间动画缺点的时候有提到过,补间动画是只能对