如何在Android上优化Canvas绘图 - drawBitmap?

时间:2010-12-01 22:08:56

标签: android canvas

我已经完成了我的分析,似乎我的大部分时间都花在drawBitmap中,在每一帧上都被称为(理解)。

我使用LunarLander示例中演示的SurfaceView /更新线程/画布锁定方法。但我已经改变了(根据this question

  • 在第一帧构造一个位图缓冲区并在其上绘制
  • 绘制每个后续帧,重用该位图(不是我屏幕上的所有内容都会发生变化)
  • 在每个帧的末尾将缓冲区绘制到目标画布(到屏幕)

Traceview向我展示了这个drawBitmap在我的800x480设备上每帧需要5毫秒。我可以得到更好的东西,还是只是“刻在石头上”的东西,我只需要优化代码的其他部分以达到每秒好的帧数?

2 个答案:

答案 0 :(得分:10)

这取决于很多东西,但通常drawBitmap()会尽可能快。在您的特定情况下,如果您不需要混合,请确保您使用的是不透明的位图。此外,尝试使用与Surface兼容的格式的Bitmap。例如,如果使用16位Surface,绘制16位(RGB565)位图将非常快(它只是一个memcpy调用。)如果Surface是32位,请使用ARGB8888不透明位图。

答案 1 :(得分:0)

最快的绘图库正在进行竞争... libgdx目前正在赢得...样本应用程序也像你一样使用800x480。

http://code.google.com/p/libgdx/wiki/SimpleApp#Project_Setup