![](/img/trans.png)
[英]“Canvas: trying to draw too large bitmap” problem in Android Studio
[英]Android draw Bitmap canvas taking too long
我正在尝试使用canvas制作一个Android游戏,我知道这很糟糕,因为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毫秒!
有人知道为什么会这样吗? 另外,如果有人知道从canvas切换到opengl的简单方法,那就太棒了:p
威廉
bg
是Rect
吗? 如果是这样,则可能需要在绘制位图之前对其进行缩放,这会浪费时间。 查看是否可以预缩放位图。
其次,您真的需要在drawBitmap
调用中paint
吗? 如果您不进行转换,则可以传递null
。
同样为什么不使用System.currentTimeMillis()
而不是将纳秒除以毫秒呢?
我注意到bitmaps.Background()是一种方法; 是否有机会反复从资源文件中解压缩位图? 如果要在每个帧上绘制位图,则应将位图对象保留在内存中。 (仅在屏幕上绘制一个预先存在的Bitmap对象就不会花那么长时间。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.