ImageLoader 网络加载图片
依赖:
//图片加载
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5
1、加载网络图片:
//图片展示的管理操作 DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheInMemory(true) .cacheOnDisk(true) .displayer(new RoundedBitmapDisplayer(20)) .showImageOnFail(R.mipmap.ic_launcher) .bitmapConfig(Bitmap.Config.RGB_565) .build(); //这样自定义设置后就可以管理二级缓存和三级缓存了 ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this) .memoryCacheSizePercentage(20)//设置占用内存的百分比 .diskCacheFileCount(100)//设置最大下载图片数 .diskCacheSize(5 * 1024 * 1024) .defaultDisplayImageOptions(options) .build(); ImageLoader.getInstance().init(configuration);//初始化完成 ImageLoader.getInstance().displayImage(imageUrl,imageView);
其中,imageUrl是图片的url字符串,imageView是图片控件;
初始化的过程通常放在Application类中。
2、加载sd卡中的图片:
String imagePath = "/mnt/sdcard/image.png"; String imageUrl = ImageDownloader.Scheme.FILE.wrap(imagePath); ImageLoader.getInstance().init(configuration);//初始化完成 ImageLoader.getInstance().displayImage(imageUrl,imageView);
3、列表中网络加载图片
在ListView的项中网络加载图片,性能会降低,原因是滑动的时候还会进行加载,会出现卡顿;
所以,最好在滑动过程中暂停加载:
lv.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling)); gv.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll, pauseOnFling));
其中的三个参数很简单,第一个是我们的ImageLoader的实例对象,第二个是boolean型参数,需要停止滑动的时候传入一个true,第三个参数控制很快速的滑动的时候图片是否加载。
4、关于缓存大小:
https://blog.csdn.net/zhangcanyan/article/details/52053521
// 先设置网上图片的路径 String uri = ""; // 可以设置图片大小 ImageSize mImageSize = new ImageSize(300, 300); // 图片的相关配置 DisplayImageOptions mOptions = new DisplayImageOptions.Builder() .cacheInMemory(true).cacheOnDisc(true) .bitmapConfig(Bitmap.Config.RGB_565).build(); ImageLoader.getInstance().loadImage(uri, mImageSize, mOptions, new ImageLoadingListener() { @Override public void onLoadingStarted(String arg0, View arg1) { // TODO Auto-generated method stub //图片开始加载状态 } @Override public void onLoadingFailed(String arg0, View arg1, FailReason arg2) { // TODO Auto-generated method stub //图片加载失败后回调,可以在这设置图片加载失败后的默认图等 } @Override public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) { ivPersonLogo.setImageBitmap(arg2); //图片加载完成,arg2即为加载出的图片,以bitmap形式存在 } @Override public void onLoadingCancelled(String arg0, View arg1) { // TODO Auto-generated method stub //图片加载取消回调 } });