ImageLoader 详解

ImageLoader 详解


应用情景

  • 网络加载大量图片

注意事项

  • 1.自定义 application 必须在清单文件只能配置 Application android:name 属性
    1. 因图片等资源在网络中加载,需配置 internet 权限
    1. 因设置本地缓存,会在本地写入内容,需要配置 写SD卡的权限
  • 4.一般我们在使用ImageLoader的时候,需要在应用程序的入口进行它的一个配置,这个配置一般写到Application里边
    1. 在Application 和 Activity 中都用了 ImageLoader,在Application中通过 ImageLoader.getInstance().init(ImageLoaderConfiguration config),来初始化 ImageLoader 操作;而在Activity 中通过 ImageLoader.getInstance().displayImage(String url, ImageView iv,DisplayImageOptions options)来设置图片。可以看到共同点:ImageLoader.getInstance(),其后为init()和display()分别执行初始化和展示操作

注意方法

  • getInstance()

    得到ImageLoader的单例。通过双层是否为 null 判断提高性能

  • init(ImageLoaderConfiguration configuration)

    初始化配置参数,参数configuration为ImageLoader的配置信息,包括图片最大尺寸、任务线程池、磁盘缓存、下载器、解码器等等。
    实现中会初始化ImageLoaderEngine engine属性,该属性为任务分发器。

  • displayImage(String uri, ImageAware imageAware, DisplayImageOptions options, ImageLoadingListener listener, ImageLoadingProgressListener progressListener)
    加载并显示图片或加载并执行回调接口

使用详解__步骤

    1. 导入安装包 universal-image-loader-1.9.3.jar
  • 2.在app 初始化的时候设置 ImageLoaderConfiguration,并初始化 ImageLoader(采用自定义的 Application ,在其里面的 onCreate()方法里面进行处理)

    • 2.1 获取 ImageLoaderConfiguration 对象的内部类 Builder
      ImageLoaderConfiguration.Builder builder = new Builder(
      getApplicationContext());
    • 2.2 设置相关参数

      • builder.threadPoolSize(3);// 设置线程数量
      • builder.threadPriority(Thread.NORM_PRIORITY - 2);// 设置线程优先级
      • builder.memoryCacheSize(2 * 1024 * 1024);// 设置缓存空间
      • builder.memoryCacheExtraOptions(480, 800);// 设置缓存中的图片宽高
      • builder.diskCacheSize(50 * 1024 * 1024); // 设置缓存空间 50M (磁盘中)
      • builder.diskCache(new UnlimitedDiscCache(new File(path)));// 自定义文件的缓存路径
        • String path=Environment.getExternalStorageDirectory().getAbsolutePath()+”…”;
      • builder.diskCacheFileNameGenerator(new Md5FileNameGenerator());//磁盘缓存的文件名的命名方式

      • 一般使用默认值 (获取文件名称的hashcode然后转换成字符串)
        或MD5 new Md5FileNameGenerator()源文件的名称同过md5加密后保存
    • builder.denyCacheImageMultipleSizesInMemory();

    • builder.tasksProcessingOrder(QueueProcessingType.LIFO);

      加载同一URL图片是,imageView 从小变大 ,从内存缓存中加载

  • 2.3 获取ImageLoaderConfiguration 对象
    • ImageLoaderConfiguration config = builder.build();
  • 2.4 初始化 ImageLoader
    • ImageLoader.getInstance().init(config);
  • 3.在活动中设置 DisplayImageOptions
    • 3.1获取 DisplayImageOptions 对象的内部类 Builder
      • DisplayImageOptions.Builder builder=new Builder();
    • 3.2 设置使用缓存 在内存中
      • builder.cacheInMemory(true);
    • 3.3 设置使用缓存在 SD 卡中
      • builder.cacheOnDisc(true);
    • 3.4 其他设置 非必须 默认图片 在 drawable中进行加载
      • 设置图片为空时,默认图片
        • builder.showImageForEmptyUri(R.drawable.ic_empty);
      • 设置加载失败的默认图片
        • builder.showImageOnFail(R.drawable.ic_error);
      • 设置正在加载的默认图片
        • builder.showImageOnLoading(R.drawable.ic_stub);
      • builder设置圆角
        • builder.displayer(new RoundedBitmapDisplayer(20));
    • 3.5 获取 DisplayImageOptions 对象
      • DisplayImageOptions options = builder.build();
  • 4.展示图片
    • 可设置样式 ImageLoader.getInstance().displayImage(String url, ImageView iv,DisplayImageOptions options);
    • 默认样式 ImageLoader.getInstance().displayImage(String url, ImageView iv)
  • 5.相关配置
    • 权限配置
      • 访问Intent _
      • 写内存卡 __
    • application 配置
      • 使用自定义的 Application,将默认application设置改为自定义的application,重新配置name,android:name=”com.example.and4_imageloader_demo1.MyApplication”
  • ImageLoader 配置介绍

      1. ImageLoaderConfiguration:

      是针对图片缓存的全局配置,主要有线程类、缓存大小、磁盘大小、图片下载与解析、日志方面的配置

      1. DisplayImageOptions:

      用于指导每一个Imageloader根据网络图片的状态(空白、下载错误、正在下载)显示对应的图片,是否将缓存加载到磁盘上,下载完后对图片进行怎么样的处理

      1. ImageLoader:

      是具体下载图片,缓存图片,显示图片的具体执行类,它有两个具体的方法displayImage(…)、loadImage(…),但是其实最终他们的实现都是displayImage(…)

    从三者的协作关系上看,他们有点像厨房规定、厨师、客户个人口味之间的关系ImageLoaderConfiguration就像是厨房里面的规定,每一个厨师要怎么着装,要怎么保持厨房的干净,这是针对每一个厨师都适用的规定,而且不允许个性化改变。ImageLoader就像是具体做菜的厨师,负责具体菜谱的制作。DisplayImageOptions就像每个客户的偏好,根据客户是重口味还是清淡,每一个imageLoader根据DisplayImageOptions的要求具体执行

    相关概念


    多线程异步加载和显示图片(图片来源于网络、sd卡、assets文件夹,drawable文件夹(不能加载9patch),新增加载视频缩略图)
    特点
    • 可配置高。支持任务线程池、下载器、解码器、内存和磁盘的缓冲、显示选项等等的配置。 (ImageLoaderConfiguration
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值