• 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
                            //图片加载取消回调
                        }
                    });
  • 相关阅读:
    推荐大家看 《亵渎》
    vue 过滤器filters的使用以及常见报错小坑(Failed to resolve filter)
    vue 与原生app的对接交互(混合开发)
    vue 3.0使用 BUG解决
    202020211 20209313 《Linux内核原理与分析》第一周作业
    2第一周部分笔记
    Cartographer系列之二——hokuyo激光雷达跑cartographer
    ROS系列之初识gmapping
    Cartographer系列之一——初体验
    SLAM学习资料整理
  • 原文地址:https://www.cnblogs.com/zhaozilongcjiajia/p/10863493.html
Copyright © 2020-2023  润新知