ImageLoader 使用记录

原创
2015/12/11 10:39
阅读数 290

这个控件的使用方法可以参考:http://www.cnblogs.com/ruiati/p/3930732.html   这个地址。里面有非常详细的配置,包括怎么让imageloader引用本地drawable、assets、sd卡之类的。有了这个骚年你的图片管理机制可以交付给imageloader来管理,其实对于bitmap的管理无非就是软引用之类的,imageloader也差不多只是多了一个双链表结构,这个双链表的作用和他内部的缓存机制有关系。具体自己去看看:http://www.cnblogs.com/kissazi2/p/3931400.html 这文章差不多就明白了。

这些东西其实网上都有很详细的描述。所以在此鄙人就不描述了,我们来说下imageloader使用上的一些细节。

   1. Imageloader 有两种加载模式:displayImage、loadImage(loadImageSync最后调用的还是loadImage

    displayImage  是需要用户传递 imageview 进去的,在imageloader 会讲传入的 imageview设置成弱引用。所以使用这种情况我们在这个方法中增加监听返回方法,方法中返回的view 可能为空,需要增加非空判断。

    loadImage 不需要用户传递imageview,这时候即使设置了监听,那么监听方法中的view返回为空,则需要自己去对imagview赋值。

    2.DisplayImageOptions-->displayer 的作用。与设置监听方法中的加载完成类似,都是在bitmap取得后在到该方法中进行处理,PS:displayer中 display方法中的ImageAware参数则会根据加载图片方法不同而返回不同子类。如:使用displayImage加载图片,那么ImageAware的setImageDrawable,setImageBitmapInto方法则有效。如使用loadImage方法setImageDrawable,setImageBitmapInto则是无效的

    3。预处理图片方法,在我们的开发中常常会遇到一种情况,为了适配能力的考虑,我们从服务端取回的图片是未经处理的都是方方正正的,而我们拿回到客户端后需要加上一些处理,比如说圆角、边框、去除锯齿等等。

如果每次都在图片加载完成返回的方法中去重新处理图片必然会产生内存的消耗,而我们采用imageLoader来管理我们的内存,这样可以更合理的让系统分配原来内存的消耗,但是我们处理图片所产生的消耗怎么并不一定会在imageloader管理中。

    我们可以在DisplayImageOptions中找到preProcessor方法。从字面意思可以知道这就是个预处理的方法。通过查看源码我们也可以知道在获取bitmap后,imageloader会事先检查是否有设置preProcessor,如果有则调取process中的方法进行设置,然后在存放到缓存链表中。到这里大家应该知道怎么处理了。

    4.降低imageloader 加载默认图片、错误图片、加载中图片的内存

      如果我们直接使用R.rawable.xxx 的加载的图片会是ARGB_8888这样就是32位,如果在可能的情况下可以将图片转成16位后在set到默认图片中。不过在设置成16位的时候,有一些非纯色图片在显示上会有点影响。




    






















展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部