Android中处理网络图片存在的难点:
-
OOM内存溢出;
-
图片尺寸和缩略图处理的平衡;
-
网络图片的加载和缓存机制。
根据这些难点,今天在这里跟大家分享一款优秀的框架:Universal-ImageLoader
Universal-ImageLoader的简介:
Universal-ImageLoader是目前Android主流的图片处理库框架之一,作者是白俄罗斯的Sergey Tarasevich。在Android图片处理中需要考虑的问题很多,例如OOM、图片缓存和网络图片加载、多线程问题及图片压缩处理等等复杂的问题。但是Universal-ImageLoader已经帮我们把这些问题处理好了,对外提供了相应的完善的请求API,我们只需要按照要求使用即可。
Universal-ImageLoader特点:
1.支持本地图片和网络图片的多线程异步加载和缓存处理
2.个性化的配置自己项目的ImageLoader
3.图片加载过程的监听回调
4.自动对加载的图片针对当前剩余内存进行裁剪优化,防止OOM
5.较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片
缺点:没有对本地文件压缩处理的相关API方法以及默认都是Src模式设置图片,没有针对Background属性开放API。
Universal-ImageLoader框架图:
Universal-ImageLoader需要用到的jar包:
好了,废话少说,直接上代码,首先看看ImageLoader的一些配置:
注释中已经说明了,这里不再赘述。
接下来看看getDisplayOptions()这个方法:
接下来在onCreate方法中声明和直接应用即可:
布局文件比较简单就是一个ImageView:
我是随便从百度中引用了一个图片的链接,接下来看看效果:
图片已经成功加载出来了,但是你会发现这张图片并没有填充满屏,这个就是上面所说的缺点:没有对本地文件压缩处理的相关API方法以及默认都是Src模式设置图片,没有针对Background属性开放API。
但是我们的效果想要满屏的话可以怎么做呢?只需要在布局中加一行代码就可以实现了:
fitXY指的是用填满的方式缩放图像,这样可以达到我们想要的满屏效果,看看加了fitXY之后的效果:
这个就是我们比较想要的效果。
最后提一下缓存问题,上面中我们的配置是把缓存存在了SD卡的haha文件中,我们看看这个文件是不是有缓存文件:
确实多了一些缓存文件,大家可以试试。
关于ImageLoader的大概使用方法就是这么简单了,源码Demo将会提供给大家学习,最后提一点,当在加载https这种图片的时候是加载不出来的,解决的方法也是在源码中有解释和解决,当然网上有人对ImageLoader的jar包进行了更改,直接导入项目工程直接用也是可以解决的,这里也不再赘述,大家直接看源码学习即可。
第一次写这种技术性的文章,写得不好望大家指正。以后会经常写写这些文章跟大家一起学习。
长按下面的二维码扫一扫可关注代码笔记:
源码连接:http://download.youkuaiyun.com/download/d199138/9596602