我需要显示一张非常大的图像(地图)。我已经有“平铺”格式的图像 - 256x256件。 我也得到了几个“缩放”级别的瓷砖。
目前问题是显示最深的缩放级别,你真的有很多瓷砖。 例如,中等大小的地图将包含4行和26列深度级别的图块。
我尝试使用二维滚动视图和图像视图来解决问题 - 每个图块1个。 问题是它崩溃了。当我尝试显示4行和20列时,它不会崩溃,显然这是一个内存问题。
所以这里的问题 - 如何显示所有这些,考虑到有限的手机RAM。 我知道应该有一种方法来处理看不见的图像的内存,并且只显示当前在滚动视图的可见区域中的那些,但我不知道该怎么做。
很高兴听到任何线索或者可能有替代方法来解决这些问题。
感谢。
答案 0 :(得分:0)
我认为你最好使用网格视图而不是滚动视图数组(但我不确定它是否同时支持side / updown滚动。
然后在您的适配器中,覆盖getView
方法。在那里,您可以控制图像的回收。
我正在做的项目也有图像和RAM的问题,我基本上做的是:
image.recycle();
System.gc();
我尝试过像50fps这样的东西,图像就像800x400x32bit,仍然没有遇到内存不足的问题。但如果我拿走System.gc(),它会立即崩溃。