13

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

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

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

我正在考虑类似的事情但我对这段代码并不满意,因为它没有考虑设备刷新率。

4

1 回答 1

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

于 2012-06-01T12:10:38.563 回答