美文网首页
Picasso源码完全解析(一)--概述

Picasso源码完全解析(一)--概述

作者: 三木青一 | 来源:发表于2017-05-17 14:02 被阅读0次

    Picasso源码完全解析(一)--概述

    Picasso源码完全解析(二)--Picasso实例的创建

    Picasso源码完全解析(三)--Request和Action的创建

    Picasso源码完全解析(四)--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源码分析之旅。

    相关文章

      网友评论

          本文标题:Picasso源码完全解析(一)--概述

          本文链接:https://www.haomeiwen.com/subject/fvsdxxtx.html