2

ビューを無効にして、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によって、ハンドラー(?)に渡された別のスレッドを呼び出します。これにはしばらく時間がかかります。

4

0 に答える 0