做android应用的时候,多少会接触到异步加载图片,或者加载大量图片的问题,而加载图片我们常常会遇到许多的问题,比如说图片的错乱,OOM等问题,对于新手来说,这些问题解决起来会比较吃力,所以就有很多的开源图片加载框架应运而生,比较著名的就是Universal-Image-Loader。
下载JAR包添加到工程libs目录下
(https://github.com/nostra13/Android-Universal-Image-Loader)
或添加依赖(implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5')
加上读写、网络权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
新建一个MyApplication继承Application,并在onCreate()中创建ImageLoader的配置参数,并初始化到ImageLoader
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
File cacheDir = StorageUtils.getCacheDirectory(this);
//创建ImageLoaderConfiguration全局配置信息
ImageLoaderConfiguration build= new ImageLoaderConfiguration.Builder(this)
.threadPoolSize(5) // 线程池大小
.threadPriority(Thread.NORM_PRIORITY - 2) // 设置线程优先级
.memoryCacheSize(5 * 1024 * 1024) // 内存缓存大小
.diskCache(new UnlimitedDiskCache(cacheDir)) // 设置磁盘缓存策略
.diskCacheSize(50 * 1024 * 1024) // 设置磁盘缓存的大小
.diskCacheFileCount(50) // 磁盘缓存文件数量
.diskCacheFileNameGenerator(new Md5FileNameGenerator()) // 磁盘缓存时图片名称加密方式
.build();
//单例模式 懒汉式
//初始化imageloader
//初始化
ImageLoader.getInstance().init(build);
}
public DisplayImageOptions Options() {
//对图片进行参数设置
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showImageOnLoading(R.mipmap.ic_launcher_round) // 加载过程中的显示图片
.showImageForEmptyUri(R.mipmap.ic_launcher_round) // 路径为空时显示的图片
.cacheInMemory(true) // 需要缓存在内存中
.cacheOnDisk(true) // 需要缓存到磁盘中
.bitmapConfig(Bitmap.Config.RGB_565) // bitmap模式
.displayer(new RoundedBitmapDisplayer(90)) // 设置图片显示形式(圆角 or 渐变等)
.displayer(new CircleBitmapDisplayer()) // 设置图片显示形式(圆形)
.build();
return options;
}
}
显示图片时用的:
//加载图片 路径 控件
ImageLoader.getInstance().displayImage(path, imageView);
记得加:
android:name="MyApplication" //初始化