android 一些图片加载库的使用感悟

狂草 2014-12-06

在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片。在这里我主要介绍一下我自己在使用Volley,Picasso,Universal-Imageloader的一些使用的感悟。以及最基本的用法介绍。

1.Volley

给ImageView设置图片源

// imageView是一个ImageView实例  
// ImageLoader.getImageListener的第二个参数是默认的图片resource id  
// 第三个参数是请求失败时候的资源id,可以指定为0  
ImageListener listener = ImageLoader.getImageListener(imageView, android.R.drawable.ic_menu_rotate, android.R.drawable.ic_delete);  
mImageLoader.get(url, listener);

使用NetworkImageView

Volley提供了一个新的控件NetworkImageView来代替传统的ImageView,这个控件的图片属性可以通过

mImageView.setImageUrl(url, imageLoader)

来设定。而且,这个控件在被从父控件detach的时候,会自动取消网络请求的,即完全不用我们担心相关网络请求的生命周期问题。

mImageLoader = new ImageLoader(mRequestQueue, new BitmapLruCache());  
.... ...  

if(holder.imageRequest != null) {  
   holder.imageRequest.cancel();  
}  
holder.imageRequest = mImageLoader.get(BASE_UR + item.image_url, holder.imageView, R.drawable.loading, R.drawable.error);

总结:如果你的工程项目,是一个比较小的项目,或者要求不是很高的项目,处理比较简单的可以使用这个库,这个库是Google2013I/O发布的一个开源库。使用这个库在图片的处理上,没有提供任何的图片处理的操作,个人感觉这个库主要在网络数据连接上比较好,在图片处理上还是不够完善,强大。

2.Picasso

Picasso加载网络图片的使用很简单,只需要一行代码就可以搞定。

Picasso.with(context) .load(url).resize(50, 50).centerCrop().into(imageView)

Picasso有如下特性:

  • 处理Adapter中的ImageView回收和取消已经回收ImageView的下载进程
  • 使用最少的内存完成复杂的图片转换,比如把下载的图片转换为圆角等
  • 自动添加磁盘和内存缓存

总结:如果你的项目里面,对于图片有一些具体的要求的话,建议使用这个库,但是这个库当你需要对图片作一些具体的操作比如加载圆角矩形图片、裁剪图片为圆形时,需要你自己写一些操作,如果基础不够好的会感觉很困难。还有就是这个库我们只能看到结果,无法关心图片的下载过程。

3.Universal-ImageLoader

  • 先要配置ImageLoaderConfiguration这个类实现全局ImageLoader的实现情况。可以选择在Application中初始化设置该类。
  • 使用ImageLoader进行图片加载的时候,先要实例化ImageLoader

总结:这个库有着对加载网络图片的吵详细配置。可以根据个人的喜欢,进行一些配置等等。并且可以实现图片下载过程的监听。且可以支持图片下载完成后,显示圆形或者圆角矩形的图片。

相关推荐