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
                        //图片加载取消回调
                    }
                });
原文地址:https://www.cnblogs.com/zhaozilongcjiajia/p/10863493.html