Picasso的详细使用

先扯下淡,还记得前年下半年的时候我开始接触并使用Glide。
使用Glide的原因很简单,网络上各种夸Glide怎么怎么好,比如加载图片省内存,比如可以加载GIF图片,谷歌推荐使用等等。可是现在我又发现一个比较怪异的现象,网上大批的人开始说picasso怎么怎么好了,比如内存也可以很小,而且包小方法数少,可以减少发生64k的问题。

先说说我当时使用glide的时候发生的问题,比如缓存到本地的图片根本取不到,如果想自己再次使用,就需要对原来的代码进行修改,比如把图片的路径存到集合里,手动再去调用这个集合(一年前)。
再比如图片RAGB值的改变,只能通过全局来改变,但是我经常遇到需要切换的问题(用默认的话-如白底的图片会背景会一些黄色很难看)就不能很好的切换等等。

说了那么多为的就是证明我不是一个随波逐流的人哈哈…….

下面我们就来看看picaso API的一个小总结

第一添加依赖

compile 'com.squareup.picasso:picasso:2.5.2'

第二简单使用

 Picasso.with(this).load("http://www.haha.cn/large/aaaa.jpg").into(mImageView);

第一个参数 上下文
第二个参数 图片地址 或者 file 或者uri
第三个参数 显示的imageview

第三API

 //加载默认图片
.placeholder(R.drawable.default_bg) 
//加载图片失败时显示的图片
.error(R.drawable.error_iamge) 
 //设置图片的尺寸
.resize(400,200)
//从配置文件读取宽高
.resizeDimen(R.dimen.image_width,R.dimen.image_height)
//设置图片的尺寸必须小于原图片的尺寸
.onlyScaleDown()
//图片裁剪和imageview的ScalType一个意思
.centerCrop()
//将整张图片完全展示但是图片大小不能小于imageview的大小
.centerInside()
//自动帮我们测理view的大小然后调用resize方法,但view宽高必须固定
.fit()
//旋转图片 .rotate(180,200,100) 后两个是圆心位置
.rotate(180)
//可以对图片进行转换 缩放 蒙版 形状 需要implements Transformation
transform(new Transformation(this))
//设置图片加载的优先级有三种优先级,LOW、NORMAL、HIGH 默认没选,调用fetch是最低的
//跳过内存缓存
//NO_CACHE:表示处理请求的时候跳过检查内存缓存
//NO_STORE: 表示请求成功之后,不将最终的结果存到内存
.memoryPolicy(MemoryPolicy.NO_CACHE,MemoryPolicy.NO_STORE)
.networkPolicy(NetworkPolicy.NO_CACHE)//跳过磁盘缓存

//添加标签
tag("PhotoTag")
cancelTag(Object tag) //取消设置了给定tag的所有请求
pauseTag(Object tag) //暂停设置了给定tag 的所有请求
resumeTag(Object tag) //resume 被暂停的给定tag的所有请求

//获取图片比起glide方便多了
Bitmap bitmap =  Picasso.with(this).load(URL).get();

第四 构建局部实例 我们直接调用的话是全局实例

    Picasso.Builder builder =newPicasso.Builder(this); 
    //构造一个Picasso
    Picasso picasso = builder.build();
    //加载图片
    picasso.load(URL)
            .into(mImageView);

第五 配置自定义下载器 downLoader
public class CustomDownloader implements Downloader {

@Override
public Response load(Uri uri, int networkPolicy) throws IOException {
    return null;
}

@Override
public void shutdown() {

}
}
    //配置下载器
    builder.downloader(new CustomDownloader());
    //构造一个Picasso
    Picasso picasso = builder.build();

第六配置缓存

    // 设置缓存大小
     LruCache cache = new LruCache(5*1024*1024);
    builder.memoryCache(cache);

第七配置线程池

     //配置线程池
          ExecutorServiceexecutorService=Executors.newFixedThreadPool(8);
   builder.executor(executorService);

第八配置全局的 Picasso Instance
我们希望我们的这些自定义配置能在整个项目都应用上,并且只配置一次

setSingletonInstance

参考:图片加载框架-Picasso最详细的使用指南

你可能感兴趣的:(android)