Javaコントロールアニメーション - スムーズで効率的にする方法
-
24-10-2019 - |
質問
私はJavaでいくつかのカスタムコントロールをプログラミングし、トランジション/フェード/動きにアニメーションを使用しています。
私がこれをしている方法は、私が新しいスレッドを開始し、変数を調整し、物事を使用して調整していることです paint()
方法。
例:
さて、私の質問は、たとえば私がフェードを実装していたと言ってみましょう。 byte x //between 0-255
そして、長方形をどこに描きますか alphaLevel += x
, 、たとえば(擬似コードで):
byte increment = 40;
for (byte i = 0; i < 255; i += increment)
{
_parentClass.setAlphaLevel (i);
_parentClass.repaint();
Thread.sleep (10);
}
_parentClass.setAlphaLevel (255);
私が知りたいのは、アニメーションが途切れにならないように、最も低いものであり、睡眠を設定する必要がある最高のものは何ですか?ターゲットデバイスのリフレッシュレートなど、人間の目のあるものがあるものがありますか?ステップで再び同じ質問。コピーできる良い数字を私に与えるウェブサイトはありますか?
私が尋ねる理由は、バッテリー操作デバイスで実行されるため、効率を最大化するため、より多くのCPU時間=バッテリーが少ないことです。何に設定しますか?
ありがとう。
解決
探しているテクニックは「ダブルバッファリング」と呼ばれます。
残念ながら、例を紹介する時間がありませんが、それはあなたが調べる必要があるものです。
他のヒント
私は個人的に調査を提案します トライデントアニメーションライブラリ, 、たとえあなたがモバイルのコンテキストでそれを使用していても(あなたがそうであるように思われるように)、ライブラリは約100kしかないように見えます。
あなたの状況にどれほど適しているかはわかりませんが、試してみる価値があります。
そして、ニッピックなポイントで... byte
Javaのデータタイプは署名されていないため、実際には-128〜127です。