【发布时间】:2011-09-24 23:35:04
【问题描述】:
我打算在 Android 中显示非常大的图像。
我的第一个解决方案 - 以 pdf 格式提供它们 - 失败了,因为并非每台手持设备都预装了 pdf 查看器,而且我不想要求用户安装一个。
所以我现在有一个我想要显示的 png (width = 3998px height=2827px)。我下载了这张图片来测试它在画廊中的显示方式。这很痛苦。好像图片库只渲染了一次,放大后根本看不懂文字。
所以我写了一个 testActivity,它只是有一个嵌套在 LinearLayout 中的 ImageView。我将图像放入drawable并将其设置为ImageView的图像源。
不幸的是,由于“
ERROR/AndroidRuntime(8906): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget"
没想到 ONE single Image 对于VM's memory 来说可能太大了。我玩了一下,将 ImageViews 大小设置为 3998 & 2827px ,将图像设置为 sdCard 并使用 fileInputStream 手动读取。
令我大吃一惊的是,它现在显示了我的图像,但如果我将 Nexus S 水平放置,我会得到与以前相同的 OutOfMemoryError。
有人可以指出通过FileInputStream 接收位图或将其设置为ImageView's 源之间的主要区别。
此外,我无法舒适地滚动两个父 scrollViews
我正在寻找一个简单的解决方案来一次显示ONE large image,同时能够放大和缩小scroll horizontal and vertical。
这是我要显示的图像示例
【问题讨论】:
标签: android image memory view png