从URL显示图像,ImageView不起作用,WebView可以

时间:2013-10-04 16:04:34

标签: java android android-imageview

我有ImageView这样的

 <ImageView
   android:id="@+id/imageFromUrl"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:layout_centerHorizontal="true"
   android:layout_marginTop="50dp"
   android:adjustViewBounds="true"
   android: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 个答案:

答案 0 :(得分:1)

这里有几件事:

首先,Kbs中的大小并不意味着它不会使应用程序崩溃,因为android处理图像的方式,在堆内部文件将占用宽度*高度* 4Bytes的内存,1Kb大小的文件巨大的尺寸很容易变成几个MB,为了下载和处理大尺寸文件你应该坚持documentation中显示的android最佳实践,它们提供了一种机制来检查ImageBounds而不加载它,并且一旦计算出加载适合您想要的任何区域的适当图像尺寸。

其次,根据您显示的代码看起来好像是在主UI线程中下载图像,请记住在最新的Android版本中禁止此操作,在主线程中使用网络调用抛出异常。为了更好的响应,请发布logcat异常,如果有的话...但无论如何,你都不应该直接加载如此大尺寸的图片,阅读提供的链接以获取更多信息

希望这有助于。

此致