Image-Universal-Loader是一个不错的图片框架,我们在使用中不乏遇到一些问题
说一下我遇到的问题
我们在按照步骤完成以后,使用的时候可能会遇到
ImageLoader must be init with configuration before using
这个问题
这是因为没有初始化出现的问题
但是我们在全局中明明初始化过的,为什么会报初始化有问题呢
我们再来一步一步做一下:
1、导入开源框架的依赖:
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
2、设置全局配置,进行初始化:
//自定义sd卡缓存目录 1.android默认cache-app被卸载时,缓存的目录一并被删除
// File cachefile=getExternalCacheDir();
File cachefile= new File(Environment.getExternalStorageDirectory().getPath()+"/images");
//1.初使化
ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(400, 700)//缓存图片最大的长和宽
.threadPoolSize(3)//线程池的数量
.threadPriority(4)
.memoryCacheSize(20*1024*1024)//设置内存缓存区大小
.diskCacheSize(80*1024*1024)//设置sd卡缓存区大小
.diskCache(new UnlimitedDiscCache(cachefile))//自定义sd卡缓存目录
.writeDebugLogs()//打印日志内容
.diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理
.build();
ImageLoader.getInstance().init(configuration);
2、在工具类中配置,方便日后使用
//2.需要创建DisplayImageOption类 两种 1,使用默认设置 2.自定义设置
DisplayImageOptions options=new DisplayImageOptions.Builder()
.cacheInMemory(true)//使用内存缓存
.cacheOnDisk(true)//使用磁盘缓存
.showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片
.showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时
.showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片
.bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式 1px=2字节
.imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式
.displayer(new RoundedBitmapDisplayer(100))//设置圆角 30代表半径 自定义
.build();
3、然后就可以直接下载图片了
ImageLoader.getInstance().displayImage(url,img,options);
问题就出在下载图片这里,有的时候可能会出刚刚说的问题
在创建完成之后写一个初始化
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(context));ImageLoader.getInstance().displayImage(url,img,options);