我已知的问题是,我的位图/画布太大,它会引发java.lang.OutOfMemoryError。 我的问题是什么对我的需求最好。 画布应绘制一个图形(给定点),可以非常宽(如3000像素或更多,理论上它可以更宽,像20000px)。高度已修复。 因为这对于任何屏幕都很宽,所以我把它放在滚动视图中,并将整个图形绘制到画布上。 所以这就是宽位图,我得到的错误。 第二种可能性是修复大小的画布,我会写一个“onScroll”方法,根据用户的滑动刷新图形。所以它只会画出一部分图。 这是更好的方法,还是有办法使第一个选项工作? 无论如何,请给我一些提示和解决方案的示例代码。滚动视图中的大画布/位图或滚动画布上的重绘画布?什么方式更快,也避免java.lang.OutOfMemoryError
下面是代码:
Bitmap bitmap = Bitmap.createBitmap(speedCanvasWidth,speedCanvasHeight,Bitmap.Config.RGB_565); //I also tried ARGB_8888
speedCanvas = new Canvas(bitmap);
graph.setImageBitmap(bitmap);
在此先感谢
的问题是,我没有图像。我在画布上绘制了一个“实况”图。因此,通过这个解决方案,我必须创建画布(非常广泛),在画布上绘制整个图形,然后使用您的解决方案将画布的一部分加载到位图中?如果是这样,这将是一个好主意。一些简短的提示如何做到这一点? – 2014-11-24 20:38:19
@Hömafreak哦。这有点不同。我试图描述的解决方案的整个目标是防止根据您已经控制的图像将不必要的像素加载到内存中。如果您一次将所有内容加载到画布上,则会用尽内存,并以您想要的尺寸创建它们。移动系统上没有足够的可用内存来一次加载超大图像。 – 2014-11-24 20:45:13
好的,我也考虑过这个问题。那么更好的解决方案是我提到的第二种可能性? – 2014-11-24 20:48:14