【译】UNIVERSAL IMAGE LOADER. PART 3---ImageLoader详解

简介:

之前的文章,我们重点讲了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

本文转自陈哈哈博客园博客,原文链接http://www.cnblogs.com/kissazi2/p/3901235.html如需转载请自行联系原作者


kissazi2
相关文章
|
数据安全/隐私保护 计算机视觉
2024年2月国内如何快速注册OnlyFans最新小白教学
onlyfans软件是一个创立于2016年的订阅式社交媒体平台,创作者可以在自己的账号发布原创的照片或视频,并需要注意的是,网络上可能存在非法或不道德的应用将其设置成付费模式,若用户想查看则需要每月交费订阅。程序,建议你在使用互联网时保持警惕,并遵循相关法律法规。(现在p站没了,大家晚上懂得都懂啊)
2024年2月国内如何快速注册OnlyFans最新小白教学
|
安全 Shell Linux
【Shell 命令集合 系统设置 】Linux 初始化系统设置setup命令 使用指南
【Shell 命令集合 系统设置 】Linux 初始化系统设置setup命令 使用指南
232 0
|
自动驾驶 物联网 5G
毫米波技术及其在5G网络中的应用详解
毫米波技术及其在5G网络中的应用详解
1256 3
|
负载均衡 监控 安全
Wi-Fi漫游深入解析:确保设备连接的有效策略
Wi-Fi漫游深入解析:确保设备连接的有效策略
1382 9
|
12月前
|
机器学习/深度学习 人工智能 算法框架/工具
探索AI在图像处理中的应用
本文深入探讨了人工智能(AI)在图像处理领域的应用,包括图像识别、图像增强和图像生成等方面。通过实际代码示例,我们将展示如何使用AI技术进行图像处理,并讨论其在不同场景下的应用。
|
安全 数据安全/隐私保护 UED
什么是OTA升级管理系统?
【7月更文挑战第20天】什么是OTA升级管理系统?
558 6
|
Linux 测试技术 API
Linux PWM接口概述 【ChatGPT】
Linux PWM接口概述 【ChatGPT】
|
Web App开发 编解码 iOS开发
iOS字体像素与磅的对应关系
iOS字体像素与磅的对应关系
677 1
|
Web App开发 定位技术 Windows
【Windows】 谷歌翻译停服后,chrome无法自动翻译?解决办法来了~
【Windows】 谷歌翻译停服后,chrome无法自动翻译?解决办法来了~
481 3
「装杯系列」驱动强制结束360核晶主动防御
「装杯系列」驱动强制结束360核晶主动防御