尝试从URL显示JPG时,我遇到问题,让图像显示在我的ImageView中。我能够打开URLConnection,在InputStream中向下拉图像,将该流解码为Bitmap。我甚至可以获得位图的高度和宽度的值。我将位图设置为ImageView,仍然可以获得Drawable的高度。但是,图像仍未出现在我的应用程序中。我可能缺少什么想法?谢谢你的帮助。
try{
URL imgURL = new URL(imgLocation);
URLConnection conn = imgURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is, 25);
Bitmap bm = BitmapFactory.decodeStream(bis);
if(bm != null){
System.err.println("Image Height: " + bm.getHeight());
System.err.println("Image Width: " + bm.getWidth());
} else {
System.err.println("bm is null!!!");
}
img.setImageBitmap(bm);
System.err.println("Drawable Height: " + img.getDrawable().getIntrinsicHeight());
} catch (IOException e) {
// Print out the exception that occurred
e.printStackTrace();
}
答案 0 :(得分:0)
我没有直接回答您的问题,但我可以为此需求提出替代解决方案。
使用ImageView会导致很多问题,因为可用性。 您需要避免屏幕锁定,并且从优化角度重新下载图像是不好的。
我建议更简单&有效解决方案你可以使用Droid-Fu的WebImageView。 它就像一个魅力。你只需传递图像的url,然后让WebImageView处理下载,显示进度甚至缓存。
这是GroidHub上的Droid-Fu的playgorund(搜索'droid-fu')
P.S。我也对这个缓存机制进行了一些扩展,已经在我的github playground中发布了(搜索'wareninja')