1、导入方式添加jar包方式不说,这里通过添加依赖的方式
implementation'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
2、添加权限
<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.READ_EXTERNAL_STORAGE"></uses-permission>
3、Application中初始化
//第一种是创建默认的加载
//创建默认的ImageLoaderConfiguration
ImageLoaderConfiguration configuration=ImageLoaderConfiguration.createDefault(this);
//初始化ImageLoader
ImageLoader.getInstance().init(configuration);
//第二种是自定义加载
//自定义加载第三方图片样式
// DisplayImageOptions options = new DisplayImageOptions.Builder()
// .showImageOnLoading(R.drawable.image_nor) // 设置图片下载期间显示的图片
// .showImageForEmptyUri(R.drawable.image_nor) // 设置图片Uri为空或是错误的时候显示的图片
// .showImageOnFail(R.drawable.image_nor) // 设置图片加载或解码过程中发生错误显示的图片
// .resetViewBeforeLoading(true) // default 设置图片在加载前是否重置、复位
// .delayBeforeLoading(200) // 下载前的延迟时间
// .cacheInMemory(true) // default 设置下载的图片是否缓存在内存中
// .cacheOnDisk(true) // default 设置下载的图片是否缓存在SD卡中
// .considerExifParams(false) // default
// .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default 设置图片以如何的编码方式显示
// .bitmapConfig(Bitmap.Config.RGB_565) // default 设置图片的解码类型
// // .displayer(new SimpleBitmapDisplayer()) // default 还可以设置圆角图片new RoundedBitmapDisplayer(20)
// .displayer(new FadeInBitmapDisplayer(200))// 图片加载好后渐入的动画时间
// // .displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片
// .handler(new Handler()) // default
// .build();
//
// //设置图片缓存路径
// File cacheDir = StorageUtils.getCacheDirectory(this);
// //自定义ImageLoaderConfiguration配置
// ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
// .memoryCacheExtraOptions(480, 800) // default = device screen dimensions 内存缓存文件的最大宽、高
// // .diskCacheExtraOptions(480, 800, null) // 本地缓存的详细信息(缓存的最大宽、高),最好不要设置这个
// .threadPoolSize(4) // default 线程池内加载的数量
// // .threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级
// .tasksProcessingOrder(QueueProcessingType.FIFO) // default
// .denyCacheImageMultipleSizesInMemory()
// .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现
// .memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值
// .memoryCacheSizePercentage(13) // default
// //可以自定义缓存路径
// .diskCache(new UnlimitedDiskCache(cacheDir))
// .diskCacheSize(100 * 1024 * 1024) // 100 Mb sd卡(本地)缓存的最大值
// // .diskCacheFileCount(100) // 可以缓存的文件数量
// // default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密
// .diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
// // .connectTimeout (5 s), readTimeout (30 s) //超时时间
// //第二个参数:连接超时时间,第三个参数:读取超时时间
// .imageDownloader(new BaseImageDownloader(this, 5 * 1000, 30 * 1000))
// .defaultDisplayImageOptions(options)
// .writeDebugLogs() // 打印debug log
// .build(); //开始构建
//
// //初始化ImageLoader
// ImageLoader.getInstance().init(configuration);
4、Activity中使用
package com.example.administrator.universal_image_loade;
import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.GridView;
import android.widget.ImageView;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.ImageSize;
import com.nostra13.universalimageloader.core.download.ImageDownloader;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
public class MainActivity extends AppCompatActivity {
private String url;
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化组件
imageView= (ImageView) findViewById(R.id.lv);
//初始化图片加载框架
final ImageLoader imageLoader = ImageLoader.getInstance();
url = "http://www.chinagirlol.cc/data/attachment/forum/201412/03/233758hw7o7h08kkozkcwi.jpg";
//第一种加载方式 需要个url图片地址
//imageLoader.getInstance().displayImage("http://img5.imgtn.bdimg.com/it/u=3218480149,1328367548&fm=21&gp=0.jpg",imageView);
//第二种加载方式
// imageLoader.displayImage(url, imageView, new ImageLoadingListener() {
// @Override //刚开始加载的图片
// public void onLoadingStarted(String s, View view) {
// imageView.setImageResource(R.drawable.ic_launcher_background);
// }
//
// @Override //加载失败图片
// public void onLoadingFailed(String s, View view, FailReason failReason) {
//
// }
//
// @Override//加载完成的图片
// public void onLoadingComplete(String s, View view, Bitmap bitmap) {
// imageView.setImageBitmap(bitmap);
// }
//
// @Override//取消加载
// public void onLoadingCancelled(String s, View view) {
//
// }
// });
//第三种加载方式 设固定宽高
//加载本地
ImageSize imageSize=new ImageSize(140,160);
imageLoader.loadImage(url,imageSize,new SimpleImageLoadingListener(){
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
imageView.setImageBitmap(loadedImage);
}
});
//加载本地的照片ImageDownloader.Scheme.FILE.wrap包装下
// String Burl="/mnt/sdcard/DCIM/1.jpg";
// imageLoader.displayImage(ImageDownloader.Scheme.FILE.wrap(Burl),imageView);
}
}
5、一个封装好的工具类
package com.example.administrator.universal_image_loade;
import android.widget.ImageView;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageSize;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
public class WXHLImageLoader {
//懒汉单例
private static WXHLImageLoader wxhlImageLoader;
//获取第三方的ImageLoader
private ImageLoader imageLoader;
private WXHLImageLoader(){
imageLoader = ImageLoader.getInstance();
}
/**
* 单例
* @return
*/
public static synchronized WXHLImageLoader getInstance(){
// return wxhlImageLoader;
if(wxhlImageLoader == null){
wxhlImageLoader = new WXHLImageLoader();
}
return wxhlImageLoader;
}
/**
* 显示图片
* @param imageUrl
* @param imageView
*/
public void displayImage(String imageUrl, ImageView imageView){
imageLoader.displayImage(imageUrl,imageView);
}
/**
* 显示图片,带监听器的
* @param imageUrl
* @param imageView
*/
public void displayImage(String imageUrl, ImageView imageView,ImageLoadingListener listener){
imageLoader.displayImage(imageUrl,imageView,listener);
}
/**
* 加载图片,带监听器的
* @param imageUrl
* @param listener
*/
public void loadImage(String imageUrl, SimpleImageLoadingListener listener){
imageLoader.loadImage(imageUrl,listener);
}
/**
* 加载图片,带监听器的
* @param imageUrl
* @param listener
*/
public void loadImage(String imageUrl, int width, int height, SimpleImageLoadingListener listener){
ImageSize targetSize = new ImageSize(width, height); // result Bitmap will be fit to this size
imageLoader.loadImage(imageUrl,targetSize,listener);
}
}