使用Volley框架的ImageLoader加载网络图片

Volley框架在请求网络图片方面也做了很多工作,提供了好几种方法.本文介绍使用ImageLoader来进行网络图片的加载.

ImageLoader的内部使用ImageRequest来实现,它的构造器可以传入一个ImageCache缓存形参,实现了图片缓存的功能,同时还可以过滤重复链接,避免重复发送请求。

下面是ImageLoader加载图片的实现方法:

public void displayImg(View view){
    ImageView imageView = (ImageView)this.findViewById(R.id.image_view);
    RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());

    ImageLoader imageLoader = new ImageLoader(mQueue, new BitmapCache());

    ImageListener listener = ImageLoader.getImageListener(imageView,R.drawable.default_image, R.drawable.default_image);
    imageLoader.get("http://developer.android.com/images/home/aw_dac.png", listener);
    //指定图片允许的最大宽度和高度
    //imageLoader.get("http://developer.android.com/images/home/aw_dac.png",listener, 200, 200);
}

使用ImageLoader.getImageListener()方法创建一个ImageListener实例后,在imageLoader.get()方法中加入此监听器和图片的url,即可加载网络图片.

下面是使用LruCache实现的缓存类

public class BitmapCache implements ImageCache {

    private LruCache<String, Bitmap> cache;

    public BitmapCache() {
        cache = new LruCache<String, Bitmap>(8 * 1024 * 1024) {
            @Override
            protected int sizeOf(String key, Bitmap bitmap) {
                return bitmap.getRowBytes() * bitmap.getHeight();
            }
        };
    }

    @Override
    public Bitmap getBitmap(String url) {
        return cache.get(url);
    }

    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        cache.put(url, bitmap);
    }
}

最后,别忘记在AndroidManifest.xml文件中加入访问网络的权限

<uses-permission android:name="android.permission.INTERNET"/>

本文示例源代码下载地址:

http://download.csdn.net/detail/gaolu/7815527

时间: 2024-10-10 16:29:10

使用Volley框架的ImageLoader加载网络图片的相关文章

android-----Volley框架使用ImageLoader加载图片源码分析

上一篇我们分析了Volley框架的源码,知道了使用Volley框架的三个步骤,如果你对此还不是很熟,建议能看看上一篇博文:android-----Volley框架源码分析,这篇我们将首先使用Volley框架的ImageLoader来实现加载图片的功能,接着从源码角度来分析加载流程: 使用ImageLoader来加载图片步骤: (1)创建一个RequestQueue对象: (2)创建一个ImageLoader对象: (3)获取一个ImageListener对象(通过ImageLoader的getI

ImageLoader加载图片

先导universal-image-loader-1.9.3包 在application配置 android:name=".MyApplication" intent权限 package com.ch.day13_imageloaderdemo; import java.io.File; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;import com.nostra13.univ

Android利用Volley框架加载网络图片

Volley框架是在Google I/O 2013上Volley发布的,目的是使Android平台上的网络通信库,能使网络通信更快,更简单,更健壮.我们也简单了解下Volley引入的背景,在Volley出现以前,我们可能面临如下的问题,比如要在ListView或是GridView中加载数量较多的图片时:先在ListAdapter#getView()里开始图像的读取,再通过AsyncTask等机制使用HttpURLConnection从服务器去的图片资源,然后在AsyncTask#onPostEx

Android Volley入门到精通:使用Volley加载网络图片

在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法.本篇文章中我们即将学习关于Volley更加高级的用法,如何你还没有看过我的上一篇文章的话,建议先去阅读Android Volley完全解析(一),初识Volley的基本用法. 在上篇文章中有提到过,Volley是将AsyncHttpClient和Universal-Image-Loader的优点集成于一身的一个框架.我们都知道,Universal-Image-Loader具备非常强大的加载网络图片的功能,而使用Volley,我们

Android Volley完全解析(二),使用Volley加载网络图片

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482165 在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法.本篇文章中我们即将学习关于Volley更加高级的用法,如何你还没有看过我的上一篇文章的话,建议先去阅读Android Volley完全解析(一),初识Volley的基本用法. 在上篇文章中有提到过,Volley是将AsyncHttpClient和Universal-Image-Loader的优点集成

Android--使用Volley加载网络图片

1. ImageRequest的用法 前面我们已经学习过了StringRequest和JsonRequest的用法,并且总结出了它们的用法都是非常类似的,基本就是进行以下三步操作即可: 1. 创建一个RequestQueue对象. 2. 创建一个Request对象. 3. 将Request对象添加到RequestQueue里面. 其中,StringRequest和JsonRequest都是继承自Request的,所以它们的用法才会如此类似.那么不用多说,今天我们要学习的ImageRequest,

使用Volley加载网络图片

我们都知道,Universal-Image-Loader具备非常强大的加载网络图片的功能,而使用Volley,我们也可以实现基本类似的效果,并且在性能上也豪不逊色于Universal-Image-Loader,下面我们就来具体学习一下吧. 1. ImageRequest的用法 前面我们已经学习过了StringRequest和JsonRequest的用法,并且总结出了它们的用法都是非常类似的,基本就是进行以下三步操作即可: 1. 创建一个RequestQueue对象. 2. 创建一个Request

Afianl框架里面的FinalBitmap加载网络图片

在Afianl框架里,FinalBitmap如何加载网络图片?有什么简单的方法吗?现在让麦子学院的android开发老师讲讲afina框架里面的finalbitmap加载网络图片的方法,Afinal里边FinalBitmap:用于显现bitmap图像,而无需思考线程并发和oom等疑问. 1.测验恳求 运用页面翻开http://avatar.csdn.net/C/6/8/1_bz419927089.jpg"可以看到一张图像. 2.新建FinalBitmap目标 1 FinalBitmap bitm

IOS加载网络图片的框架(共有4中方法)

框架名为:UIImage+WebCache.h   继承于UIimageView 框架里面加载网络图片的方法共4中:分别为1.普通加载   2.线程NSThread    3. #import "ViewController.h" #import "UIImage+WebCache.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [su