查看无效太慢了?

时间:2012-09-19 23:35:19

标签: android view invalidation redraw

我试图通过使其无效来在视图中绘制一些动画,从而改变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) {

        }
    }
}

我已经玩过睡眠时间了,但即使睡眠时间为50毫秒,也似乎没有重新绘制视图。

在onDraw方法中的视图并不算太多。只是用于测试目的的一些线和矩形。 有人知道如何加快速度吗?我应该以不同的方式处理线程吗?我是开放的建议,线程的时间不是我的专长。 :)

感谢您的帮助。

编辑:

我的猜测:通过runOnUiThread我调用另一个传递给某个处理程序(?)的线程,这需要一段时间......但是我应该怎么做呢?

0 个答案:

没有答案