Android绘制Bitmap画布耗时太长

时间:2012-07-08 04:10:30

标签: java android android-canvas

我正在尝试使用canvas制作一款安卓游戏,我知道这很糟糕,因为opengl更好,但我当时并没有真正想到它,现在我差不多完成了它,我只是想得到它完成并稍后将其转换为opengl。

因此,在我的onDraw开始时,我使用以下代码绘制一个位图:

Log.d("Start Time", System.nanoTime()/1000000 + "");
        canvas.drawBitmap(bitmaps.Background(), null, bg, paint);
        Log.d("After drawColor", System.nanoTime()/1000000 + "");

因此,正如您所看到的,我基于矩形绘制位图,因此它被拉伸和绘制。使用日志来查看执行此操作所需的时间,我看到只需要15到20毫秒来绘制这个位图!

有谁知道为什么会这样?此外,如果有人知道从画布切换到opengl的简单方法,那将是非常棒的:p

威廉

2 个答案:

答案 0 :(得分:1)

bgRect吗?如果是这样,则可能必须在绘制之前缩放位图,这将消耗时间。看看你是否可以预先缩放位图。

其次,您真的需要paint来电中的drawBitmap吗?如果您没有进行转换,则可以通过null

另外,为什么不使用System.currentTimeMillis()代替纳秒来获得毫秒?

答案 1 :(得分:0)

我注意到bitmaps.Background()是一个方法;是否有机会从资源文件中反复解压缩Bitmap?如果您每帧都在绘制一个Bitmap,那么您应该将Bitmap对象保留在内存中。 (只需将预先存在的Bitmap对象绘制到屏幕上就不会那么长。)