【发布时间】:2023-03-30 19:03:01
【问题描述】:
我有一个绘制表面视图的游戏线程。它处理游戏变量,然后在画布上绘制。 board 是一个位图,将绘制在视图的画布上。 callDrawHelper 在板上重新绘制,第一个简单的 背景 图像(与板大小相同)。然后 clusters 列表根据游戏变量数据在画布上绘制一组图像。整个过程执行每一帧。
callDrawHelper 需要接近 80 毫秒,这是线程处理的最高组件。这也确实降低了帧速率。如何提高此代码段的性能。
protected void callDrawHelper() {
Canvas gfx = drawJustBackground();
for (int i = 0; i < clusters.size(); i++) {
PieceCluster cluster = clusters.get(i);
if (cluster.isVisible) {
gfx.drawBitmap(cluster.Picture, cluster.BoardLocation.left,
cluster.BoardLocation.top, null);
}
}
}
protected Canvas drawJustBackground() {
Canvas gfx = new Canvas(board);
gfx.drawBitmap(background, 0, 0, null);
return gfx;
}
【问题讨论】:
标签: android multithreading canvas frame-rate