我最近一直在做一些研究,但没有得到一个好的答案,我想做的是在我的应用程序中以 20mb 显示一个非常大的图像 8000x5000 作为背景(它是一个小游戏)大图像的原因是用户可以缩放,所以我们希望在最大缩放时保持高细节。然而,这是一个非常大的文件,会阻塞很多允许的内存,关于如何在 Android 应用程序中实现它而不消除内存限制的任何想法?
提前感谢您花时间阅读/协助。
为不同的缩放级别使用不同的图像。
没有放大时加载较低分辨率的图像。
当用户放大时,加载下一级缩放图像,而不是整个图像,只加载他想要的区域。使用BitmapRegionDecoder您只能加载图像的一部分。
我认为解决这个问题的唯一方法是做一些类似谷歌的地图和使用瓷砖的事情。对于最低缩放级别,您需要一个分辨率低得多的图像,然后为每个后续缩放级别设置图块,并绘制用户在放大时能够看到的任何图块。
不幸的是,要使缩放速度更快,您需要提前将不同的图块加载到内存中,这可能会占用相似数量的内存。
您确定它只有 20 MB(MB = 兆字节,mb = 毫位)吗?如果每个像素有一个以上的字节,它可能会更高。
您可以做的是为不同的缩放深度制作低分辨率副本,并将其分解为图块。这样,您一次只需要大约与屏幕大小相同的图块,即重叠时,这可能是屏幕大小的两倍。