我目前正使用Bitmap
向SurfaceView
绘制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
答案 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图像,因为它们效率最高。