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