java从url显示图像,ImageView不起作用,WebView起作用
我有一个这样的ImageView
<ImageView
安卓:id="@+id/imageFromUrl"
安卓:layout_width="fill_parent"
安卓:layout_height="fill_parent"
安卓:layout_centerHorizontal="true"
安卓:layout_marginTop="50dp"
安卓:adjustViewBounds="true"
安卓:scaleType="fitCenter" />
我必须在运行时显示一个来自Web服务地址的图像
请注意,图像的尺寸非常大(249x2902),但文件的大小非常小,约为32k
我试过了
URL url = new URL(urlToImage);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
imageFromUrl.setImageBitmap(myBitmap);
这似乎并没有渲染图像,它只是白色的
我也很累
imageFromUrl.setImageURI(Uri.parse(urlToImage));
这也不行,屏幕是白色的
但是如果我用WebView
并且
webView.loadUrl(urlToImage);
很好
有什么好处?为什么ImageView
不起作用
我正在测试Galaxy Tab 2,但它不起作用。如果我在模拟器上试用,一切都很好,ImageView可以工作
# 1 楼答案
这里有几件事:
首先,以Kbs为单位的大小并不意味着它不会因为android处理图像的方式而导致应用程序崩溃,在堆内部,该文件将占用宽度*高度*4字节的内存,一个1Kb大小的大尺寸文件很容易变成数MB,为了下载和处理大文件,你应该遵循documentation中所示的android最佳实践,它们提供了一种机制来检查ImageBounds,而无需加载它,并在计算后加载适合你想要的任何区域的适当图像大小
其次,根据你显示的代码,你似乎是在主UI线程中下载图像,考虑到在最新的android版本中禁止此操作,在主线程中使用网络调用会引发异常。为了获得更好的响应,请发布logcat异常(如果有)。。。但不管怎样,你都不应该直接加载这么大的图片,阅读提供的链接以获取更多信息
希望这有帮助
问候