Android开源框架Universal-Image-Loader完全解析(三)

Universal-Image-Loader这个框架用的人好像挺多的,就这个开源框架,小编再接着前两篇为大家分享,本篇文章主要从源码的角度上面去解读这个强大的图片加载框架。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

de >ImageView mImageView = (ImageView) findViewById(R.id.image);    de>

de >        de>de >String imageUrl = de>de >"https://lh6.googleusercontent.com/-55osAWw3x0Q/URquUtcFr5I/AAAAAAAAAbs/rWlj1RUKrYI/s1024/A%252520Photographer.jpg"de>de >;    de>

de >            de> 

de >        de>de >//显示图片的配置    de>

de >        de>de >DisplayImageOptions options = de>de >newde> de >DisplayImageOptions.Builder()    de>

de >                de>de >.showImageOnLoading(R.drawable.ic_stub)    de>

de >                de>de >.showImageOnFail(R.drawable.ic_error)    de>

de >                de>de >.cacheInMemory(de>de >truede>de >)    de>

de >                de>de >.cacheOnDisk(de>de >truede>de >)    de>

de >                de>de >.bitmapConfig(Bitmap.Config.RGB_565)    de>

de >                de>de >.build();    de>

de >            de> 

de >        de>de >ImageLoader.getInstance().displayImage(imageUrl, mImageView, options);de>

大部分的时候我们都是使用上面的代码去加载图片,我们先看下:

?

1

2

3

de >publicde> de >voidde> de >displayImage(String uri, ImageView imageView, DisplayImageOptions options) {  de>

de >        de>de >displayImage(uri, de>de >newde> de >ImageViewAware(imageView), options, de>de >nullde>de >, de>de >nullde>de >);  de>

de >    de>de >}de>

从上面的代码中,我们可以看出,它会将ImageView转换成ImageViewAware,ImageViewAware主要是做什么的呢?该类主要是将ImageView进行一个包装,将ImageView的强引用变成弱引用,当内存不足的时候,可以更好的回收ImageView对象,还有就是获取ImageView的宽度和高度。这使得我们可以根据ImageView的宽高去对图片进行一个裁剪,减少内存的使用。

接下来看具体的displayImage方法,由于这个方法代码量蛮多的,所以这里我分开来读。

?

1

2

3

Tag:

Freenovo 发表于2013-12-09 23:49:00 | 编辑 | 分享 0

引用地址:

原文地址:https://www.cnblogs.com/freenovo/p/4469791.html