常用的图片加载框架有ImageLoader,Picasso,Glide,Fresco。这篇先写Picasso。Picasso是square公司推出的,特点:使用简单,扩展性强,支持各种来源的图片,内部集成了okhttp网络框架。
它的功能:
1.提供内存和磁盘缓存,默认开启,可设置不进行缓存
2.图片加载过程中默认显示的图片
3.图片加载失败或出错后显示的图片
4.图片加载成功或失败的回调
5.自定义图片大小,自动测量imageview大小,剪裁,旋转图片等
6.对图片进行转换
7.标签管理,暂停和恢复图片加载
8.请求优先管理
9.可以从不同来源加载图片,网络,resources,assets,files,content providers
10.更加丰富的扩展功能
简单调用
Picasso.with(this).load(uri.pare(imageurl)).into(imageview);
picasso采用建造者模式,,只看Builder内部类提供的方法即可。
1.defaultBitmapconfig(Bitmap .Config bitmapconfig)
设置像素格式,Picasso的默认格式为ARGB-8888,我们知道采用这个值一个像素占用4个字节,可以用RGB-565来替换,这样可以节省一半的内存开销,但图片的质量有损失。
2.downloader(Downloader downloader)
自定义下载器,默认okhttp,具体的实现类是okHTTPDownloader
3.executor(ExecutorService executorService)
线程池,默认的实现是PicassoexEcutorService,这里面会根据不同的网络情况来设置核心线程和最大线程数,最大为4,最小为1,默认为3.
4.memorycache(cache memorycache)
缓存策略,默认实现为lrucache,LRU目前在内存缓存这块使用的非常广泛
5.listener(Listener listener)
图片加载失败的一个回调事件,回调方法为onImageLoadFailed(Picasso picasso ,uri uri,Exception exception)
6.addRequestHandler(RequestHandler requestHandler)
自定义加载图片的来源