我想让ImageView在网站上显示图像.所以我创建了一个新的ImageView并执行imgView.setImageURI(uri);
当我启动应用程序时,图像不会出现,我收到错误,"resolveUri在坏位图Uri(uri)上失败".
关于如何解决这个问题的任何想法?
pax*_*blo 21
如果它不是内容URI,则此链接可能有所帮助.它似乎表明imgView.setImageURI()不应该用于常规URI.复制相关位:
是的,
ImageView.setImageURI(ContentURI uri)有效,但它适用于Android平台特有的内容URI,而不是指定Internet资源的URI.该约定适用于无法通过ContentProvider的Cursor方法直接公开的二进制对象(例如图像).相反,String引用用于引用不同的内容URI,可以通过针对内容提供者的单独查询来解析该URI.setImageURI方法只是一个包装器,可以为您执行这些步骤.我测试了这种用法
setImageView,它确实按预期工作.对于您的使用情况,不过,我想看看BitmapFactory.decodeStream()和URL.openStream().
此外,为了使这个答案自成一体,来自该链接的另一个帖子的示例代码显示了如何执行此操作:
private Bitmap getImageBitmap(String url) {
Bitmap bm = null;
try {
URL aURL = new URL(url);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
} catch (IOException e) {
Log.e(TAG, "Error getting bitmap", e);
}
return bm;
}
Run Code Online (Sandbox Code Playgroud)
我没有测试过这段代码,我只是偏执,喜欢确保SO答案有用,即使网上的其他网站都消失了:-)
嗯..你需要下载图像,然后将其设置为位图.这是众多例子中的一个. http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html
Glide是一个很棒的用于显示图像的库!
Glide.with(context)
.load(uri)
.into(imageView);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21382 次 |
| 最近记录: |