接之前高级用法部分继续学习Picasso
自定义Picasoo
创建Picasso内部类Builder
Picasso.Builder builder =new Picasso.Builder(MainActivity.this);
通过builder去更改picasso中默认的一些配置
- Downloader
如果你想更换默认的Downloader,你可以通过Picasso.Builder调用.downloader(Downloader downloader),传入一个实现Downloader的实现类,比如OkHttpDownloader
- RequestHandler
如果你习惯于一个自定义URI的形式(内容提供者)进行图片访问,这里会提供一个很强大的工具,Request Handlers,当你实现了你的自定义RequestHandler后,只要用builder调用
addRequestHandler()
就可以了- MenoryCache
如果你不满足系统默认的15%的可用空间的内存缓存大小,可以根据Picasso.Builder来自定义设置。
以设置RequestHandler为例
public class LeeRequest extends RequestHandler { Context mContext; public LeeRequest(Context context) { mContext=context; } private static final String LEE_RECIPE_SCHEME = "cheese"; @Override public boolean canHandleRequest(Request data) { // TODO: 2017/4/10 判断当前的请求是否是自定义的URI return LEE_RECIPE_SCHEME.equals(data.uri.getScheme()); } @Override public Result load(Request request, int networkPolicy) throws IOException { // TODO: 2017/4/10 验证当前uri可以进行加载 // TODO: 2017/4/10 我们可以进行网络请求或者本地加载,然后返回结果 String imagekey =request.uri.getHost(); Bitmap bitmap; if(imagekey.equals("lijing")){ bitmap= BitmapFactory.decodeResource(mContext.getResources(), R.mipmap.user_icon); }else { bitmap =BitmapFactory.decodeResource(mContext.getResources(),R.mipmap.ic_launcher); } return new Result(bitmap, Picasso.LoadedFrom.DISK); } }
用我们的builder创造picasso对象并将其变成全局使用,就可以用我们的自定义picasso进行加载工作了。
Picasso.Builder builder = new Picasso.Builder(MainActivity.this); builder.addRequestHandler(new LeeRequest(MainActivity.this)); Picasso newpicasso = builder.build(); newpicasso.load("cheese://lijing") .into(imag);