android使用ImageLoader缓存图片
2014年11月11日 · 61 字 · 1 分钟
缓存和异步是两个极大提升用户体验的好东西,android加载图片时的开销还是挺大的,要是不做缓存同步加载,网速不给力的情况下,等个十几秒是有可能的。
今天要说的是一个叫做ImageLoader的库
GITHUB:https://github.com/nostra13/Android-Universal-Image-Loader
使用这个库有以下几步:
- 导入libs目录
- 声明自己的MyApplication类(继承Application)
- 在onCreate()方法中
public void onCreate() {
super.onCreate();
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory() //缓存在内存中
.cacheOnDisc() //磁盘缓存
.build();
ImageLoaderConfiguration config2 = new ImageLoaderConfiguration.Builder(this)
.defaultDisplayImageOptions(options)
.threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.discCacheFileNameGenerator(new Md5FileNameGenerator())
.tasksProcessingOrder(QueueProcessingType.LIFO)
.build();
ImageLoader.getInstance().init(config2);
}
- 在要加载图片的地方使用
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory() // 缓存用
.cacheOnDisc()
.bitmapConfig(Bitmap.Config.RGB_565)//防止溢出
.displayer(new RoundedBitmapDisplayer(139)) // 图片圆角显示,值为整数
.build();
ImageLoader.getInstance().displayImage(url, avatar, options);
其中 url 是图片URL地址,avatar为ImageView,options为动态配置,这里加了一个防止溢出的参数。
好了,使用起来是不是很简单呢~我们压根不用操心异步和缓存的问题了