2010-12-19 70 views
2

我有一个非常大的图像(地图),我需要显示。我已经有了“平铺”格式的图像 - 256x256块。 此外,我得到了几个“缩放”级别的瓷砖。在Android手机上显示巨大的平铺图像

目前的问题是显示最深的缩放级别,在那里你会有很多的瓷砖。例如,中等尺寸的地图将包含4行和26列的深度级别的图块。

我试着用2维滚动视图和图像视图来解决问题 - 每个瓷砖1个。 问题是它崩溃。当我尝试显示4行和20列时,它不会崩溃,显然这是一个内存问题。

所以这里的问题 - 如何显示所有,考虑到有限的手机内存。 我明白,应该有一种方法来处理不可见图像的内存,并且只显示那些当前位于滚动视图可见区域的内存,但我不知道如何去做。

很高兴听到任何线索或者可能有替代方法来处理这些事情。

谢谢。

回答

0

我想你可能会更好地使用网格视图,而不是滚动视图的列(但我不知道这是否支持侧/沿着上下滚动在同一时间。

然后在你的适配器,覆盖getView 。方法在那里,你可以控制你的图像的回收

的项目我做的还与图像和RAM有问题,什么我基本上做的是这样的:。

image.recycle(); 
System.gc(); 

我试图做上述的东西与IM一样50fps年龄就像800x400x32bit,但仍然没有遇到内存不足的问题。但是,如果我拿走System.gc(),它立即崩溃。

+0

感谢您的回答。我最终使用了一个可以垂直/水平滚动的自定义视图,并直接在onDraw方法中绘制到画布上,并在附近保留了一个缓存的贴图副本,似乎完成了我需要的大部分工作,需要进一步的缓存调整,但这是一个好的开始。 – 2010-12-20 12:00:09