我的应用程序必须显示一些高分辨率的图像(大约1900*2200像素),支持收缩缩放。为了避免内存不足错误,我计划解码图像以全屏显示,使用
options.inSampleSize = scale (scale was calculated as Power of 2 as Document)(我使用的视图是ImageView的TouchImageView扩展)
因此,我可以快速加载图像,并在屏幕(图像)之间平滑地滑动。然而,当我收缩缩放时,我的应用程序会因为缩放图像而丢失细节。如果我加载完整的图像,我不能加载快速或流畅的滑动,在收缩缩放后拖动。然后,我尝试只加载完整的图像时,用户开始收缩缩放,但我仍然不能顺利拖动图像,因为非常大的图像。安卓图库即使是8Mpx的图片也能做得很好。
任何人都可以帮助我。提前感谢
发布于 2013-08-27 03:22:25
很抱歉回答一个老问题,但我刚刚完成了一个图像视图,它显示了来自资源或外部存储的图像,并在您收缩放大时从图像中加载更高分辨率的图块。由于屏幕区域的高分辨率图像数据未加载,因此应避免内存不足异常。
https://github.com/davemorrissey/subsampling-scale-image-view
发布于 2013-08-06 22:24:44
我知道这个问题很久以前就被问过了,但这个答案可能会对其他正在为此而苦苦挣扎的人有所帮助。我也有同样的问题。您应该考虑使用WebView并使用它加载您的图像,即使它是一个本地图像。例如,要在资源中加载图像,请使用以下命令:
// Get a WebView you have defined in your XML layout
WebView webView = (WebView) findViewById(R.id.webView1);
// Fetch the picture in your folders using HTML
String htmlData = "<img src=\"my_image.png\">";
webView.loadDataWithBaseURL("file:///android_asset/", htmlData, "text/html", "utf-8", null);
// Activate zooming
webView.getSettings().setBuiltInZoomControls(true);我承认使用WebView来完成这样的任务是非常奇怪的,这是我找到的唯一解决方案。至少你永远不会得到一个OOM异常。
https://stackoverflow.com/questions/15175760
复制相似问题