将位图绘制为SurfaceView背景

时间:2012-02-08 20:37:06

标签: java android bitmap surfaceview

我目前正使用BitmapSurfaceView绘制Canvas.drawBitmap()。这似乎真的降低了我的帧率,我想知道我能做些什么来解决这个问题。我引用了我在onDraw()方法之外创建的位图。我确保图像很小,不透明,像素格式匹配......等等。当我不绘制图像时,帧速率上升约10-15 FPS。有什么想法来加快这个速度吗?我经历了明显的滞后。

我在所有内容之外创建位图...

private Bitmap bitmapPlayer = BitmapFactory.decodeResource(getResources(), R.drawable.player);

然后在我的onDraw()方法中......

canvas.drawBitmap(bitmapPlayer, null, drawingRect, null); // drawingRect is the Rect to draw the Bitmap inside of
// ... Rest of drawing code

2 个答案:

答案 0 :(得分:1)

我只能假设你在绘制调用中做了一些逻辑错误的事情,如果你没有看到代码和下面的例子之间存在任何差异,

http://www.droidnova.com/playing-with-graphics-in-android-part-iii,176.html

我将开始研究以下内容,并将图形硬件用于绘图。

http://developer.android.com/resources/articles/glsurfaceview.html

希望这有帮助

答案 1 :(得分:0)

您用于背景的位图有多大。如果它是超大且只有一个尺寸而不是为hdpi,mdpi等创建的,那么您可能会引用一个不必要的大图像。如果是这种情况,我会使用BitmapFactory类来创建与Canvas的宽度和高度相匹配的缩小版图像。

P.S。建议使用png图像,因为它们效率最高。