Android绘制图像性能

时间:2013-02-23 04:40:32

标签: android bitmap frame-rate

我正在制作一个与Pong非常相似的简单游戏。游戏中的主要机制包括滑动屏幕在背景上绘制图像,然后在这两个事物之上绘制精灵。

我遇到了性能问题,我不知道为什么。我已经禁用了绘制前景图像的所有绘图函数(在背景上方但在精灵下面)。这导致了这个问题。

使用的前景图像是30kb png。我只在启动时加载我的图像一次(RGB565格式),然后使用:

@Override
public void drawImage(Image Image, int x, int y) {
    canvas.drawBitmap(((AndroidImage)Image).bitmap, x, y, null);

在Draw方法中将图像绘制到画布上。由于某种原因(在我的Nexus 7上运行),这种情况非常缓慢。如果我使用drawRect方法,它会完美运行,所以它与我绘制导入图像的方式有关。 drawBitmap是一个不好的方法吗?我是否需要为这么简单的游戏学习这个OpenGL的东西?

感谢您的任何建议。

2 个答案:

答案 0 :(得分:0)

如果有人遇到这个问题,我的情况可能是相关的,但可能不是。

我使用4mb的wav文件作为标题页的主题曲,并忘记在游戏开始时释放内存。我现在得到了光滑的fps!

答案 1 :(得分:0)

由于您的代码段很短,我不确定您是如何调用该方法的。

如果要绘制响应速度非常快的视图,则应使用SurfaceView在onDraw(Canvas画布)方法中绘制内容。

由于您正在编写游戏,所以乒乓球的位置多久更新一次?此更新是在AsyncTask还是Runnable中执行的?只有在sprite的位置更新时,才可以通过调用invalidate()来减少对onDraw的过度调用。