在Android中,以下最简单的方法是什么:
答案 0 :(得分:20)
这是我在应用程序中实际使用的方法,我知道它有效:
try {
URL thumb_u = new URL("http://www.example.com/image.jpg");
Drawable thumb_d = Drawable.createFromStream(thumb_u.openStream(), "src");
myImageView.setImageDrawable(thumb_d);
}
catch (Exception e) {
// handle it
}
我不知道Drawable.createFromStream
的第二个参数是什么,但传递"src"
似乎有效。如果有人知道,请说清楚,因为文档并没有真正说出任何关于它的内容。
答案 1 :(得分:6)
到目前为止,最简单的方法是构建一个简单的图像反转器:
public Bitmap getRemoteImage(final URL aURL) {
try {
final URLConnection conn = aURL.openConnection();
conn.connect();
final BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
final Bitmap bm = BitmapFactory.decodeStream(bis);
bis.close();
return bm;
} catch (IOException e) {}
return null;
}
然后,您只需提供该方法的URL,它将返回Bitmap
。然后,您只需使用ImageView
中的setImageBitmap
方法来显示图片。
答案 2 :(得分:6)
请注意这里的两个答案 - 它们都有OutOfMemoryException
的机会。尝试下载大型图像(例如桌面墙纸)来测试应用程序。需要说明的是,违规行是:
final Bitmap bm = BitmapFactory.decodeStream(bis);
和
Drawable thumb_d = Drawable.createFromStream(thumb_u.openStream(), "src");
菲利克斯的回答会在catch {}声明中找到它,你可以在那里做点什么。
以下是解决OutOfMemoryException
错误的方法:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
Bitmap bmp = null;
try {
bmp = BitmapFactory.decodeStream(is, null, options);
} catch (OutOfMemoryError ome) {
// TODO - return default image or put this in a loop,
// and continue increasing the inSampleSize until we don't
// run out of memory
}
以下是我在我的代码中对此的评论
/**
* Showing a full-resolution preview is a fast-track to an
* OutOfMemoryException. Therefore, we downsample the preview image. Android
* docs recommend using a power of 2 to downsample
*
* @see <a
* href="https://stackoverflow.com/questions/477572/android-strange-out-of-memory-issue/823966#823966">StackOverflow
* post discussing OutOfMemoryException</a>
* @see <a
* href="http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inSampleSize">Android
* docs explaining BitmapFactory.Options#inSampleSize</a>
*
*/
答案 3 :(得分:6)
你也可以尝试这个lib: https://github.com/codingfingers/fastimage
当我们有很少的项目具有相同的模式,并且lib出现了;)那么为什么不与他人分享......
答案 4 :(得分:0)
这很简单:
在您的gradle脚本中添加此依赖项:
implementation 'com.squareup.picasso:picasso:2.71828'
* 2.71828是当前版本
然后对图像视图执行此操作:
Picasso.get().load(pictureURL).into(imageView);