【问题标题】:Display huge tiled image on android phone在安卓手机上显示巨大的平铺图像
【发布时间】:2010-12-19 01:47:37
【问题描述】:

我有一张非常大的图片(地图)需要显示。我已经有了“平铺”格式的图像 - 256x256 块。 我还获得了几个“缩放”级别的图块。

目前的问题是显示最深的缩放级别,在这种情况下,您会有很多图块。 例如,一张中等大小的地图将包含 4 行和 26 列用于深层的瓦片。

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

所以这里的问题 - 如何显示所有这些,考虑到有限的手机 RAM。 我确实知道应该有一种方法可以为看不见的图像释放内存,并且只显示当前在滚动视图的可见区域中的图像,但我不知道该怎么做。

很高兴听到任何线索,或者可能有其他方法可以解决这些问题。

谢谢。

【问题讨论】:

    标签: android maps tiles


    【解决方案1】:

    我认为您最好使用网格视图而不是滚动视图数组(但我不确定它是否同时支持侧/向上滚动。

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

    我正在做的项目也有图像和RAM的问题,我基本上在做的是这样的:

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

    我尝试使用 800x400x32bit 的图像进行 50fps 之类的上述操作,但仍然没有遇到内存不足的问题。但是如果我拿走 System.gc(),它会立即崩溃。

    【讨论】:

    • 感谢您的回答。我最终使用了一个可以垂直/水平滚动的自定义视图,并在 onDraw 方法中直接绘制到画布上,并在附近保留一个缓存的瓷砖副本,似乎可以完成我需要的大部分事情,需要进一步的缓存调整,但是这是一个好的开始。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多