java - 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
别的东西,还是这是一个很好的解决方案,我必须找到错误?
解决方案
我决定继续使用清晰的 android 引擎。我已经解决了画布重新绘制的所有问题。如果有人有一些问题:只需将 SurfaceView 内部的更改推送到自身,就像这样:
public void update() {
invalidate();
Canvas canvas = getHolder().lockCanvas(null);
this.draw(canvas);
getHolder().unlockCanvasAndPost(canvas);
}
推荐阅读
- c - 在 C 语言中,如何在 Mac OS 上安装 GL/glx.h 、 GL/gl.h 和 GL/glu.h
- django - Django - 将带有图像的 JSON 发送到服务器
- python - Python readline 读取不正确\n
- javascript - 如何使用 JavaScript 突出显示 HTML 列表中的单词形成字符串
- angular - 如何将 API 数据放入角度图表?
- google-compute-engine - gRPC 计算引擎教程
- html - 文本流出
隐藏溢出且不会居中的元素
- node.js - 如何从MongoDB中的数组中删除对象
- python - 是否有一种很好的理解方式来访问隐藏在 dicts 中的几个 2D 数组
- java - Wave File 原始数据 16bits 样本值