有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    这里有几件事:

    首先,以Kbs为单位的大小并不意味着它不会因为android处理图像的方式而导致应用程序崩溃,在堆内部,该文件将占用宽度*高度*4字节的内存,一个1Kb大小的大尺寸文件很容易变成数MB,为了下载和处理大文件,你应该遵循documentation中所示的android最佳实践,它们提供了一种机制来检查ImageBounds,而无需加载它,并在计算后加载适合你想要的任何区域的适当图像大小

    其次,根据你显示的代码,你似乎是在主UI线程中下载图像,考虑到在最新的android版本中禁止此操作,在主线程中使用网络调用会引发异常。为了获得更好的响应,请发布logcat异常(如果有)。。。但不管怎样,你都不应该直接加载这么大的图片,阅读提供的链接以获取更多信息

    希望这有帮助

    问候