首页 > 解决方案 > Android Java 每毫秒绘制到画布

问题描述

我想画一些活动。我在 SurfaceViews 中使用过线程,但它根本不会推动更改!在这里你可以看到我以前的东西:

            Canvas canvas = null;
            try {
                canvas = this.surfaceHolder.lockCanvas();
                synchronized (canvas) {
                    this.gameSurface.update();
                    this.gameSurface.draw(canvas);
                }
            } catch (Exception e) {
                // Do nothing.
            } finally {
                if (canvas != null) {
                    canvas.drawColor(Color.BLACK);
                    this.surfaceHolder.unlockCanvasAndPost(canvas);
                }
            }
            try {
                sleep(2);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

(线程处理示例 - 我已经检查过,它只会在第一次被淹死,但后来它没有推送任何更改)。那么,我应该换成SurfaceView别的东西,还是这是一个很好的解决方案,我必须找到错误?

标签: javaandroidmultithreadingcanvas

解决方案


我决定继续使用清晰的 android 引擎。我已经解决了画布重新绘制的所有问题。如果有人有一些问题:只需将 SurfaceView 内部的更改推送到自身,就像这样:

public void update() {
        invalidate();
        Canvas canvas = getHolder().lockCanvas(null);
        this.draw(canvas);
        getHolder().unlockCanvasAndPost(canvas);
}

推荐阅读