Volley框架在请求网络图片方面也做了很多工作,提供了好几种方法.本文介绍使用ImageLoader来进行网络图片的加载.
ImageLoader的内部使用ImageRequest来实现,它的构造器可以传入一个ImageCache缓存形参,实现了图片缓存的功能,同时还可以过滤重复链接,避免重复发送请求。
下面是ImageLoader加载图片的实现方法:
使用ImageLoader.getImageListener()方法创建一个ImageListener实例后,在imageLoader.get()方法中加入此监听器和图片的url,即可加载网络图片.
下面是使用LruCache实现的缓存类
最后,别忘记在AndroidManifest.xml文件中加入访问网络的权限
本文示例源代码下载地址:
http://download.csdn.net/detail/gaolu/7815527
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