13

過去数か月の間に、Java でオープンソースのトゥイーン エンジン (ユニバーサル トゥイーン エンジン) を構築し、Android ゲームにスムーズなアニメーションとトランジションを簡単に追加できるようにしました。これはゲームで簡単に機能し、多くの人 (主にLibGDXコミュニティ)によってうまく使用されています。このライブラリは汎用的で、何でもアニメーション化するために使用できます (Swing UI コンポーネント、opengl ゲーム オブジェクトなど)。組み込みのアニメーション フレームワークと比較して、非常に複雑なアニメーションの作成が大幅に容易になると信じているため、Android UI 専用のライブラリにアドオンを作成したいと考えています。

私のライブラリは.update(float deltaTime)、実行中のすべてのアニメーションを更新するたびに呼び出す必要があるメソッドを公開しています。すべてのゲームで無限ループが発生するため、ゲーム用に調整されていますが、UI の場合はそうではありません。

そのため、Android API のアニメーション フレームワークが内部でどのように機能するのか疑問に思っていました。継続的に実行され、フレームごとにアニメーションを更新し、新しいアニメーションが実行されるまで一時停止するアニメーション専用の静的スレッドはありますか?

私はそのようなことを考えていましたが、たとえばデバイスのリフレッシュレートが考慮されていないため、このコードにはあまり満足していません.

4

1 に答える 1

3

まず、Android ビュー システムがそれをどのように実装しているかを見てみましょう。オープンソースの喜び。

ビューで .animate() を呼び出すと、ViewPropertyAnimator が返され、startAnimation() で ValueAnimator が開始されます。

ValueAnimator には、ループを駆動する Handler があります。

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 に答える