博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android动画具体解释二 属性动画原理
阅读量:7036 次
发布时间:2019-06-28

本文共 1432 字,大约阅读时间需要 4 分钟。

    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. 动画是怎样计算的

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

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

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

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

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

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

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

上一篇:

下一篇:

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

希望对你们有所帮助!

转载地址:http://tfnal.baihongyu.com/

你可能感兴趣的文章
Spring 3: 核心技术之AOP配置
查看>>
我的友情链接
查看>>
中小企业是否需要邮件服务器系统
查看>>
关机命令
查看>>
禁止浏览器缓存的响应头和定时刷新
查看>>
Win8.1下安装Sass Compass
查看>>
sjtu oj 1250 最大连续子序列问题变形
查看>>
OSPF在企业网络中的应用
查看>>
运维核心之一 CMDB
查看>>
python高性能编程--002--全局解释器锁GIL
查看>>
VSS 信息安全
查看>>
python基础学习笔记
查看>>
Java的HashMap和HashTable
查看>>
我的友情链接
查看>>
windows系统之WSUS服务器:更改WSUS更新文件的路径
查看>>
Btrace
查看>>
我的友情链接
查看>>
python抓取豆瓣妹子图片并上传到七牛
查看>>
关于Spring Data redis几种对象序列化的比较
查看>>
windows下批处理设置U盘盘符为U【非PE】
查看>>