一.简介
多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等
支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置
支持图片的内存缓存,文件系统缓存或者SD卡缓存
支持图片下载过程的监听
根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
提供在较慢的网络下对图片进行加载
二.代码实现
2.build.gradle中
3.1存入SD卡
3.2在另一个类中引用
4 .MyApp中
4.1不存入SD卡
以上只是部分代码,其中(data.get(i).getImg()是获取的json中的数据)
多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等
支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置
支持图片的内存缓存,文件系统缓存或者SD卡缓存
支持图片下载过程的监听
根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片
提供在较慢的网络下对图片进行加载
二.代码实现
1.项目清单文件设置
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"></uses-permission>//删除缓存图片
<application
android:name=".MyApp">
2.build.gradle中
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
3.在MyApp中3.1存入SD卡
public class MyApp extends Application{
@Override
public void onCreate() {
super.onCreate();
//得到地址存入图片
String path = Environment.getExternalStorageDirectory().getPath() + "/image";
File file = new File(path);
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(200, 200)//配置内存缓存图片的尺寸
.memoryCacheSize(2 * 1024 * 1024)//配置内存缓存的大小
.threadPoolSize(3)//配置加载图片的线程数
.threadPriority(1000)//配置线程的优先级
.diskCache(new UnlimitedDiskCache(file))//UnlimitedDiskCache 限制这个图片的缓存路径
.diskCacheFileCount(50)//配置sdcard缓存文件的数量
.diskCacheFileNameGenerator(new Md5FileNameGenerator())//MD5这种方式生成缓存文件的名字
.diskCacheSize(50 * 1024 * 1024)//在sdcard缓存50MB
.build();//完成
ImageLoader.getInstance().init(config);
}
}
3.2在另一个类中引用
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.mipmap.ic_launcher) //加载图片时的图片
.showImageOnFail(R.mipmap.ic_launcher) //加载失败时的图片
.cacheInMemory(true) //启用内存缓存
.displayer(new RoundedBitmapDisplayer(20)) //设置显示风格这里是圆角矩形
.cacheInMemory(true)//让图片进行内存缓存
.cacheOnDisk(true)//让图片进行sdcard缓存
.build();
ImageLoader.getInstance().displayImage(data.get(i).getImg(),holderOne.one_img,options);
4 .MyApp中
4.1不存入SD卡
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.mipmap.ic_launcher)
.displayer(new FadeInBitmapDisplayer(2000)).cacheOnDisk(true)
.cacheInMemory(true).build();
ImageLoaderConfiguration configs = new ImageLoaderConfiguration.Builder(this)
.defaultDisplayImageOptions(options).threadPoolSize(5)
.build();
ImageLoader.getInstance().init(configs);
4.2在另一个类中 ImageLoader.getInstance().displayImage(data.get(i).getImg(),holderOne.one_img,options);
以上只是部分代码,其中(data.get(i).getImg()是获取的json中的数据)