本博客包含包含Android-Universal-Image-Loader 网络图片加载框架实现图片加载和结合universal-image-loader与LruCache来自定义缓存图片,可以设置缓存与不缓存。
Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示。是个主流的应用,很多应用都有用到,如:天猫,淘宝等。
Universal-Image-Loader源码分析:https://github.com/nostra13/Android-Universal-Image-Loader
jar包下载:Universal-Image-Loader.jar下载
效果图:
由效果图可以看到第一次加载和第二次加载是不一样的,第一次加载是从服务器端获取,其中将他缓存了下来,第二次加载时就会和第一次加载比较,相同的就从缓存中获取,新的图片则重新到服务器端获取,从而提高效率,减少用户流量。
代码:
Android-Universal-Image-Loader 直接加载的方式
private void showImg() {
imageLoader = ImageLoader.getInstance();
imageUrls = Images.imageThumbUrls;
// 使用DisplayImageOptions.Builder()创建DisplayImageOptions
options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.mipmap.ic_launcher) // 设置图片下载期间显示的图片
.showImageForEmptyUri(R.mipmap.ic_launcher) // 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.mipmap.ic_launcher) // 设置图片加载或解码过程中发生错误显示的图片
.cacheInMemory(true) // 设置下载的图片是否缓存在内存中
.cacheOnDisk(true) // 设置下载的图片是否缓存在SD卡中
.displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片
.build(); // 构建完成
} imageLoader.displayImage(img[position], holder.image,options);
Android-Universal-Image-Loader结合LruCache
private ImageLoader mImageLoader;
private void initView() {
mImageLoader = ImageLoader.getInstance(3, ImageLoader.Type.LIFO);
/***
* 第一个参数:Url
* 第二个参数:图片实例
* 第三个参数:是否缓存
*
*/
mImageLoader.loadImage("http://img.my.csdn.net/uploads/201407/26/1406383299_1976.jpg", imageview1, true);
mImageLoader.loadImage("http://tnfs.tngou.net/image/info/150729/d9ae7426fef7f2d58c190cffab6ad5f7.png", imageview2, true);
mImageLoader.loadImage("http://tnfs.tngou.net/image/info/150729/c96da5303be57a916e62ca79ecb9930d.jpg", imageview3, true);
}
好东西要大家一起分享,希望对大家有所帮助,呵呵!
源码点击下载
其他网络图片加载方式,请看
Android图片加载框架之Picasso非常好的图片加载缓存库