Picasso源码完全解析(二)--Picasso实例的创建
Picasso源码完全解析(三)--Request和Action的创建
Picasso源码完全解析(五)--图片的获取(BitmapHunter)
Picasso源码完全解析(六)--请求的取消、暂停、和恢复
Picasso源码完全解析(七)-- CleanupThread 取消请求
Picasso源码完全解析(一)--概述
Picasso是一个省事的图片加载框架,对于复杂的图片加载需求,常常像这样一行代码搞定:
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
很多在Android上图片加载的陷阱都被Picasso自动处理,比如:
在Adapter里处理ImageView的循环利用和下载取消
使用尽量少的内存处理复杂的图片转换
自动的内存和磁盘缓存
Picasso提供的功能有:
Adapter下载--ImageView自动被复用并且之前的下载自动被取消
image转换,支持自定义图片转换
支持占位图
支持调试
Picasso的使用方式:
通常在使用中,与开发者接触最多的是Picasso实例,Picasso提供一个默认的全局单例,我们使用with()静态方法获得就是这个默认单例,picasso采用链式调用的方式,使我们能够使用一行代码搞定图片加载,通常的使用方式如下:
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
同时,你也可以对图片的尺寸做一些处理:
Picasso.with(context).load(url).resize(width,height).centerInside().into(imageView);
也可以设置一些占位图,用于图片预加载或者加载失败的展示:
Picasso .with(context)
.load(url)
.placeholder(R.drawable.loading)
.error(R.drawable.error)
.into(imageView);
以上演示的是使用默认全局单例来加载图片,这个默认全局单例可以满足大多数的图片加载需求,如果这个单例无法满足你的需求,你可以采取以下方案之一:
自己创建一个Picasso实例,并设置为单例(setSingletonInstance()),前提是在第一次调用with()之前设置
保持默认单例不变,自己定义另外的Picasso实例
在创建Picasso实例的时候,可以定义自己的RequestHandler用于图片请求处理;
picasso默认使用LRUCache对图片进行内存缓存,如果有其他内存缓存需求,可以在创建picasso实例的时候指定;
在2.5.2之前,如果应用集成了Okhttp3,那么Picasso使用OkHttp3进行下载,并自动进行磁盘缓存,否则使用HttpURLConnection进行下载,磁盘缓存需要自己指定。2.5.2以后默认使用OkHttp3进行下载,如果对图片下载有其他需求,可以自己实现Dowloader,并在创建Picasso实例的时候指定。
在使用Picasso加载图片的时候,可以自定义自己的Transformer,用于对bitmap的转换。
以上就是对Picasso的使用总结。下面开始Picasso源码分析之旅。
网友评论