我有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可以工作。
答案 0 :(得分:1)
这里有几件事:
首先,Kbs中的大小并不意味着它不会使应用程序崩溃,因为android处理图像的方式,在堆内部文件将占用宽度*高度* 4Bytes的内存,1Kb大小的文件巨大的尺寸很容易变成几个MB,为了下载和处理大尺寸文件你应该坚持documentation中显示的android最佳实践,它们提供了一种机制来检查ImageBounds而不加载它,并且一旦计算出加载适合您想要的任何区域的适当图像尺寸。
其次,根据您显示的代码看起来好像是在主UI线程中下载图像,请记住在最新的Android版本中禁止此操作,在主线程中使用网络调用抛出异常。为了更好的响应,请发布logcat异常,如果有的话...但无论如何,你都不应该直接加载如此大尺寸的图片,阅读提供的链接以获取更多信息
希望这有助于。
此致