フレームごとにアニメーションを更新する必要がありますCADisplayLink
。iOS では 、WinPhone では ですがCompositionTarget
、Android ではどうすればよいですか?
現在、 をTimer
と一緒に使用しHandler
ていますが、コールバックをリフレッシュ レートと同期させる方法があると思います。
フレームごとにアニメーションを更新する必要がありますCADisplayLink
。iOS では 、WinPhone では ですがCompositionTarget
、Android ではどうすればよいですか?
現在、 をTimer
と一緒に使用しHandler
ていますが、コールバックをリフレッシュ レートと同期させる方法があると思います。
私が知っている最も直接的なものはChoreographer
(API 16の時点で)です。
アニメーションの書き方によって同期の最適な方法が決まるようです。Choreographer は一般的に役に立ちません。Choreographer は、アニメーションが AFAIK に含まれる「アニメーション フレームワーク」の外部で記述されている場合に役立ちますViewPropertyAnimator
。おそらく XML 定義のアニメーションでしょうか? まさに文書化されていないもの。
Choreographer
GLSurfaceView
主にアニメーションの同期に役立つようです。
ViewTreeObserver
うーん、あなたを助けるかもしれないように見えます。このコードを試してください:
final ViewTreeObserver vto = myView.getViewTreeObserver();
vto.addOnDrawListener(new ViewTreeObserver.OnDrawListener() {
@Override
public void onDraw() {
// Do whatever you need to do...
}
});
いくつかのメモ:
onDraw
その中でできることには多くの制限があります。特に、ビュー ツリーを変更することはできません。それが必要な場合は、ViewTreeObserver.OnPreDrawListener
代わりに を見てください。