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
引用地址: