博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【译】UNIVERSAL IMAGE LOADER. PART 3---ImageLoader详解
阅读量:6820 次
发布时间:2019-06-26

本文共 2691 字,大约阅读时间需要 8 分钟。

在,我们重点讲了的三个主要组件,现在我们终于可以开始使用它了。

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); // CorrectlyImageView 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(当你需要显示大尺寸的图片时)

 

 

 

参考链接:

转载地址:http://gmozl.baihongyu.com/

你可能感兴趣的文章
《Linux学习并不难》Linux常用操作命令(14):grep命令查找文件中符合条件的字符串...
查看>>
MFC界面库BCGControlBar v25.1新版亮点四:网格控件等
查看>>
Linux下定时切割Nginx访问日志并删除指定天数前的日志记录
查看>>
zabbix 监控项目
查看>>
第三周第二节、用户密码管理及usermod、mkpasswd命令
查看>>
跨交换机实现VLAN
查看>>
27个提升效率的iOS开源库推荐
查看>>
Python的"print"函数在“Hello World”之外的延伸
查看>>
计划任务
查看>>
获取无序数组中第n大的数及快速排序算法使用
查看>>
我的友情链接
查看>>
MongoDB复制集原理
查看>>
Java开发(2) - Tomcat配置JNDI数据源
查看>>
Highcharts error #12 问题解决办法
查看>>
数字图像处理的常用概念和方法
查看>>
Dubbo协议介绍
查看>>
HA配置方案
查看>>
sed处理变量替换
查看>>
Netsh Diag
查看>>
win8
查看>>