11

我的应用程序必须显示一些高分辨率图像(约 1900*2200 像素),支持捏缩放。为避免内存不足错误,我计划使用解码图像以显示全屏

options.inSampleSize = scale (scale was calculated as Power of 2 as Document)

(我使用的视图是TouchImageView扩展的ImageView

所以我可以快速加载图像并在屏幕(图像)之间平滑滑动。但是,当我捏​​缩放时,我的应用会因为缩放图像而丢失细节。如果我加载完整图像,我无法快速加载或平滑滑动,在捏缩放后拖动。然后我尝试仅在用户开始捏缩放时加载完整图像,但由于图像非常大,我仍然无法平滑拖动图像。Android 画廊甚至可以完美地完成 8Mpx 图像。

任何人都可以帮助我。提前致谢

4

2 回答 2

9

很抱歉回答一个老问题,但我刚刚完成了一个图像视图,该视图显示了来自资产或外部存储的图像并带有子采样,并在您捏放大时从图像中加载更高分辨率的图块。作为区域的高分辨率图像数据屏幕未加载应避免内存不足异常。

https://github.com/davemorrissey/subsampling-scale-image-view

于 2013-08-26T19:22:25.230 回答
3

我知道这个问题是很久以前提出的,但这个答案可能会帮助其他人在这个问题上苦苦挣扎。我有完全相同的问题。您应该考虑使用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 异常。

于 2013-08-06T14:24:43.730 回答