Android动画如何在幕后工作?

Aur*_*bon 13 animation android thread-safety tween

在过去的几个月里,我在Java(Universal Tween Engine)中构建了一个开源补间引擎,以便能够轻松地为我的Android游戏添加流畅的动画和过渡.它像游戏一样轻而易举,并且被许多人成功使用(主要是在LibGDX社区).该库是通用的,可用于动画任何东西(Swing UI组件,opengl游戏对象等).现在,我想创建一个专门用于Android UI的lib的插件,因为我相信与内置动画框架相比,它可以极大地简化非常复杂的动画的创建.

我的lib公开了一种.update(float deltaTime)方法,每次要更新所有正在运行的动画时都必须调用该方法.它是为游戏量身定制的,因为每个游戏都会暴露无限循环,但UI并非如此.

因此,我想知道Android API的动画框架是如何工作的.是否存在专用于动画的静态线程,它连续运行并逐帧更新动画并暂停直到有新动画运行

我在想是这样,但我不是这个代码真的很高兴,因为它没有考虑设备的刷新率考虑的实例.

nEx*_*are 3

一个好的起点是看看 Android 视图系统是如何实现它的。开源的乐趣。

当你在视图上调用 .animate() 时,你会得到一个 ViewPropertyAnimator,它在 startAnimation() 时启动一个 ValueAnimator。

ValueAnimator 有一个驱动循环的处理程序。

https://github.com/CyanogenMod/android_frameworks_base/blob/ics/core/java/android/view/ViewPropertyAnimator.java

https://github.com/CyanogenMod/android_frameworks_base/blob/ics/core/java/android/animation/ValueAnimator.java