UNIVERSAL IMAGE LOADER. PART 3---ImageLoader详解

转载 2016年05月30日 14:37:33

之前的文章,我们重点讲了Android-Universal-Image-Loader的三个主要组件,现在我们终于可以开始使用它了。

Android-Universal-Image-Loader有四个重载方法

void displayImage(String url, ImageView view)
void displayImage(String url, ImageView view, DisplayImageOptions options)
void displayImage(String url, ImageView view, ImageLoadingListener listener)
void displayImage(String url, ImageView view, DisplayImageOptions options, ImageLoadingListener listener)

第一个重载方法

所有东西都很简单。url就是图片的下载地址,ImageView就是需要显示它的imageView控件。这个ViewOption(DisplayOptions)将使用默认配置option(defaultDisplayImageOptions(…))

第二个重载方法

我们可以针对特定的任务做一些特定的option。首先,我会先给一个使用特定操作的例子:

复制代码
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.stub_image)
.showImageForEmptyUrl(R.drawable.image_for_empty_url)
.cacheInMemory()
.cacheOnDisc()
.decodingType(DecodingType.MEMORY_SAVING)
.build();
复制代码

• 当真正的图片正在下载,是否需要在ImageView中显示另一张图片,显示什么图片; 
• 当遇到空的Image URL时,是否需要在ImageView中显示另一张图片,显示什么图片; 
• 是否在内存中缓存已加载的image; 
• 是否在磁盘中(file system)缓存已下载的图片; 
• 要尽可能快(DecodingType.FAST)还是尽可能节约地使用RAM(DecodingType.MEMORY_SAVING)


所以,我们可以在每次调用displayImage()方法的时候将这些option传递过去,或者在初始化中的configuration中定义默认的option,然后程序中就会使用这些特定的options不管你有没有明确地传递DisplayImageOptions。

第三个重载方法

除此之外,我们可以使用ImageLoadingListener监听图片的下载和显示过程:

public interface ImageLoadingListener {
    void onLoadingStarted();
    void onLoadingFailed();
    void onLoadingComplete();
}

第四个重载方法是最强大的。你可以定制option和监听那些过程

1、为了正常运行,你需要传递给ImageLoader正确的参数。重点是ImageView而不是Image URL。如果你在代码里面创建一个ImageView(而不是使用LayoutInflater),然后将当前的Activity传递给构造函数,而不是application context。

ImageView imageView = new ImageView(getApplicationContext()); // Wrong!

ImageView imageView = new ImageView(MyActivity.this); // Correctly
ImageView imageView = new ImageView(getActivity()); // Correctly (for Fragments)

2、只有当你想加载ImageView图片比设备的屏幕尺寸更大(例如,对于后续的缩放操作),那么你才需要在configuration配置maxImageWidthForMemoryCache(…)和maxImageHeightForMemoryCache(…)参数。在其他情况下,你不需要特殊的配置:这些参数是因为需要考虑缓存bitmap时屏幕大小和内存大小。

3、明智地在configuration中设置线程池大小:大池(线程数>10)允许多线程同时运行,这将极大地影响UI响应的速度。但是它可以通过将这些线程的优先级设置为更低解决:当ImageLoader运行以及更多的图片加载时,低优先级的线程会让UI更具响应性。UI的相应能力对列表视图(如ListView、GridView)来说至关重要(如平滑滚动时),所以你应该配置threadPoolSize(...) and threadPriority(...)参数为你的应用程序选一个最优的配置。

4、memoryCacheSize(...) and memoryCache(...)设置有相互重叠的地方。在一个configuration对象中只使用其中一个。

5、discCacheSize(…),discCacheFileCount(…)和discCache(…)设置有相互重叠的地方。在一个configuration对象中只使用其中一个。

6、如果在App中使用ImageLoader你总是或几乎总要传递相同的加载option(DisplayImageOptions)给displayImage(…)方法,然而一个合理的解决方案时在ImageLoader配置中将这些相同的加载选项设置为默认配置(defaultDisplayImageOptions(...) method)。然后在调用displayImage(…)时你就可以不指明这些option。如果options没有明确传递给这些方法,那么这个任务就会使用默认的options。

7、对于FAST 和 MEMORY_SAVING两种解析类型没有特别的重大的区别,但是推荐对所有种类的列表视图(GridView、ListView)使用FAST(当你需要显示许多小图片)。为图片查看器使用MEMORY_SAVING(当你需要显示大尺寸的图片时)

 

 

 

参考链接:

UNIVERSAL IMAGE LOADER. PART 3


作者:kissazi2 
出处:http://www.cnblogs.com/kissazi2/ 
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

Android Universal Image Loader 源码分析-超详细,超全面

1. 功能介绍 1.1 Android Universal Image Loader Android Universal Image Loader 是一个强大的、可高度定制的图片缓存,本文...
  • mcc_19920603
  • mcc_19920603
  • 2016年01月28日 14:55
  • 718

【安卓中的缓存策略系列】安卓缓存策略之综合应用ImageLoader实现照片墙的效果

在前面的【安卓缓存策略系列】安卓缓存之内存缓存LruCache和【安卓缓存策略系列】安卓缓存策略之磁盘缓存DiskLruCache这两篇博客中已经将安卓中的缓存策略的理论知识进行过详细讲解,还没看过这...
  • htq__
  • htq__
  • 2016年05月31日 19:10
  • 19322

深入解析开源项目之Universal-Image-Loader(一)框架篇

ImageLoader是一个优秀的图片加载开源项目,很多童鞋都在自己的项目中用到了。优秀的项目从来都是把简单留给开发者,把复杂封装在框架内部。...
  • zhengzechuan91
  • zhengzechuan91
  • 2015年12月13日 11:37
  • 1410

Universal-Image-Loader学习系列(一),下载及简单的使用

1.Android-Universal-Image-Loader的简介 在Android应用开发过程中,加载和处理图片是一种非常普遍的的需求。一个好的图片处理框架对应用的性能和用户的体验有着很大的帮助...
  • jiangxuqaz
  • jiangxuqaz
  • 2015年04月06日 08:24
  • 1195

使用AndroidStudio分析和解决ImageLoader引起OOM问题

转载地址:http://blog.csdn.net/u012306714/article/details/50765289 公司正在做的项目使用到了ImageLoader来加载大量图...
  • l_215851356
  • l_215851356
  • 2016年09月02日 14:07
  • 1475

Universal Links配置及注意事项

最近公司做H5的找到我,说是要实现H5跳转APP的功能,让我来调研支持一下,然后百度了几份资料,说的都很详细,然而实际开发的过程中,确实遇到了些许的坑。 关于Universal Links如何配置以...
  • chenglei9128
  • chenglei9128
  • 2017年01月03日 15:20
  • 716

如何使用Universal Image Loader加载本地图片

本篇通过使用UIL(Universal Image Loader)加载本地图片,先上图:
  • FaceDream
  • FaceDream
  • 2014年08月21日 11:03
  • 1620

Universal Image Loader 学习笔记-设计模式

单例模式单例模式应该说是我们在使用UIL时,第一个用到的设计模式。
  • Long_Fei_Jia_You
  • Long_Fei_Jia_You
  • 2016年12月26日 12:18
  • 184

Universal Image Loader 学习笔记-框架配置

UIL框架是强大的、灵活的,很重要的一点在于各种配置。概述ImageLoader的配置(ImageLoaderConfiguration)是应用程序的全局性的,你只能设置一次。所以,一般在自定义的Ap...
  • Long_Fei_Jia_You
  • Long_Fei_Jia_You
  • 2016年12月15日 16:57
  • 241

Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用

大家好!差不多两个来月没有写文章了,前段时间也是在忙换工作的事,准备笔试面试什么的事情,现在新工作找好了,新工作自己也比较满意,唯一遗憾的就是自己要去一个新的城市,新的环境新的开始,希望自己能尽快的适...
  • xiaanming
  • xiaanming
  • 2014年05月28日 08:50
  • 266818
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UNIVERSAL IMAGE LOADER. PART 3---ImageLoader详解
举报原因:
原因补充:

(最多只允许输入30个字)