ビューを無効にして、onDrawメソッドの位置を変更して、ビューにいくつかのアニメーションを描画しようとしています。
次のようになります。
コントローラ:
public void setStateProgress(int percent) {
stateProgress = percent;
view.invalidate();
}
スレッド:
public void run() {
long startTime = System.currentTimeMillis();
while (activity.STATE != MainActivity.State.ANIMATION_FINISHED) {
long timeDiff = System.currentTimeMillis() - startTime;
int percent = Math.round(((float) MainActivity.TIME_PER_STATE / 10000f)
* timeDiff);
// if this state's time is over, move on to the next.
if (timeDiff >= MainActivity.TIME_PER_STATE
&& activity.STATE != MainActivity.State.ANIMATION_FINISHED) {
activity.setState(activity.STATE + 1);
startTime = System.currentTimeMillis();
percent = 0;
}
final int finalPercent = percent;
activity.runOnUiThread(new Runnable() {
public void run() {
Log.d(TAG, "Updating progress to "+finalPercent+"%, invalidating view...");
activity.getAnalyzeController().setStateProgress(
finalPercent);
}
});
try {
Thread.sleep(50);
} catch (Exception e) {
}
}
}
スリープ時間をいじってみましたが、50msのスリープ時間でもビューが再描画されないようです。
ビューのonDrawメソッドでは、それほど多くはありません。テスト目的のためのほんの一部の線と長方形。誰かが物事をスピードアップする方法を知っていますか?スレッドを別の方法で処理する必要がありますか?私は提案を受け入れています。スレッドのタイミングは私の専門ではありません。:)
ご協力いただきありがとうございます。
編集:
私の推測:runOnUiThreadによって、ハンドラー(?)に渡された別のスレッドを呼び出します。これにはしばらく時間がかかります。