从URL加载图片并缓存到imageView中

10

你好,我是一名Android新手。我想从URL中将图像插入到imageView中,但每次加载imageView时,第二次都应该在没有互联网的情况下插入,也就是说它应该被存储在缓存中。


到目前为止,你做了什么? - Shahzeb
使用Fresco,它是Facebook的图像加载库,我觉得很不错 https://github.com/facebook/fresco - Syed Raza Mehdi
如果你正在寻找磁盘缓存,可以查看这个链接:https://dev59.com/Y2Ml5IYBdhLWcg3wXWET#32516598。如果你需要内存缓存,可以参考这个链接:http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html。 - Muhammad Babar
4个回答

13

你可以使用Picasso库来实现此功能。你可以从Picasso库网站下载它,然后将这个jar文件放入libs文件夹中。它将管理图片的所有属性。

http://square.github.io/picasso/
String imgURL = "Your URL";
ivmage = (ImageView) findViewById(R.id.imageView1);
Picasso.with(MainActivity.this).load(imgURL).into(ivmage);

感谢第三方是最好的方式。 - ehsan wwe

4
您可以使用 Picasso 库。
通过使用 Picasso,有以下优点:
  • 在适配器中处理 ImageView 回收 和取消下载。
  • 最小内存使用的复杂图像转换。
  • 自动内存和磁盘缓存
Url 加载 Image
Picasso.with(context).load(url).into(imageView);

请参考此链接获取API:Picasso


2

1
我建议使用Picasso库来完成这个任务。这里是Picasso库的详细文档。
示例:
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

您可以使用Volley的ImageLoader。 这里 您可以找到有关Volley图像加载的文档。
例如:
// Retrieves an image specified by the URL, displays it in the UI.
ImageRequest request = new ImageRequest(url,
    new Response.Listener<Bitmap>() {
        @Override
        public void onResponse(Bitmap bitmap) {
            mImageView.setImageBitmap(bitmap);
        }
    }, 0, 0, null,
    new Response.ErrorListener() {
        public void onErrorResponse(VolleyError error) {
            mImageView.setImageResource(R.drawable.image_load_error);
        }
    });
// Access the RequestQueue through your singleton class.
MySingleton.getInstance(this).addToRequestQueue(request);

如果您正在使用Volley,则必须手动缓存图像。 Picasso会默认缓存图像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接