我的应用程序正在加载一个大图像(房屋平面图),然后在图像上绘制触摸反应对象(家具、灯具等)。我的应用程序包含一个基本图像文件,但对象来自我数据库中的坐标。
我已经在多次迭代中成功部署了该应用程序,但现在我需要使用更大的基本映像,并且在许多设备上BitmapFactory
导致OutOfMemory
异常(旧设备和新设备;任何小于 32MB 堆的东西似乎都崩溃了)。我已经阅读了关于 SO 的 157 OOM 问题,但恐怕他们似乎都指向的链接对我没有帮助,因为分辨率/缩放对应用程序的功能至关重要。
我尝试在加载之前测试设备的可用内存,但结果充其量是参差不齐(一些设备,如 Galaxy S3 报告大量堆但仍然崩溃)。我也尝试过降低分辨率,但根据上述测试将图像缩小到安全尺寸时,图像变得无法使用。
有没有另一种方法可以在不使用位图的情况下实现这种设计?我需要:
- 加载大型基础图像
- 在基础图像上创建可点击的形状,保持它们相对于基础图像的位置/比例
- 奖励:在我的应用程序的 iOS 版本中,我可以进行 SVG 样式的文本缩放,因此小对象上的长标签将保留在对象内部,而不是在地图上运行(并且在图像缩放之前将不可见)。在 android 中复制它会让我成为一个快乐的代码猴子。
如果需要,我可以发布代码,但你们之前都看过(几乎所有代码都来自 SO)。
提前感谢您的阅读,以及您可以提供的任何帮助。