2017-01-13 3 views
0

私はthisと同様のボールのアニメーションをフレームバウンスでフレームを作成しようとしています。Canvas onDrawは時間がかかりますか?

私のデバイス上では完全に動作しますが、アニメーションは実際には時間がありません。 onDraw()は時間を計られますか(つまり、定期的に一定の遅延で呼び出されます)?または、フレームレートが非常に高いデバイスでは、アニメーションが素早く実行され、フレームレートの低いデバイスではゆっくりと実行される可能性があります。

runnableを使用していますか?

+0

あなたが遅いか速いアニメーションを実行するとはどういう意味ですか..あなたは、フレームレートについて話していますか? – amalBit

+0

はい。私は質問を更新しました。 – Confuse

答えて

1

実行可能ファイルを使用していますか?

実行可能ファイルを使用する際には何も問題ありません。あなたの要件は、良質の携帯電話では60fps、ローエンドのデバイスでは低いfpsを実行することです。

Canvas onDrawはタイムリーですか?

現在、キャンバスのonDraw()は、60fpsのアニメーションを達成するために16msごとにトリガーされる必要があります。それを減らすには、あなたの状態に基づいて32ミリ秒ごとにトリガします。

注:
私たちは、キャンバスビューでinvalidateを呼び出すことによってのみonDrawメソッドをトリガすることができます。しかし、すべての無効化が再描画されることを100%保証することはできません。これは、ここでは、いくつかのフレームドロップがあなたのアニメーションから光沢を取り除く場所です。


私の2セント:

あなたが再描画を実行するために価値のアニメーターを使用して、キャンバス上のカスタムビューを扱っている(無効化)は、あなたに機能を容易にする任意の種類を適用するための柔軟性を提供します。また、キャンバスの仕組みを理解するためのいくつかの興味深い記事で、欠落したフレームを避けることができます。

https://hackernoon.com/android-draw-a-custom-view-ef79fe2ff54b#.vtdmbs95g

https://medium.com/dualcores-studio/make-an-android-custom-view-publish-and-open-source-99a3d86df228#.3jdi1pbt7

関連する問題