Picasso使用详解

一、Picasso简介

        Picasso是Square公司出品的一个强大的图片下载和缓存图片库。

        Picasso特点:

        1. 加载载网络或本地资源

        2. 自动的内存和硬盘缓存

        3. 在adapter中回收和取消当前的下载

        4. 图形转换操作,如变换大小,旋转等,提供了接口来让用户可以自定义转换操作

        官网地址  http://square.github.io/picasso/


二、Android Studio导入依赖

dependencies {

        ......

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

}


三、加载资源

1. 加载网络资源

Picasso.with(context).load("http://i.imgur.com/1opCuAV.jpg").into(imageView);

2. 加载assets资源

Picasso.with(context).load("file:///android_asset/hb_head.png").into(imageView);

3. 加载Resources资源

Picasso.with(context).load(R.mipmap.ic_launcher).into(imageView);

4. 加载File资源

Picasso.with(context).load(file).into(imageView);

5. 加载Uri资源

Picasso.with(context).load(uri).into(imageView);


四、设置加载中和加载失败的图片

Picasso.with(context)

.load(url)

.placeholder(R.drawable.user_placeholder) //设置加载中显示的资源

.error(R.drawable.user_placeholder_error) //设置加载错误时显示的资源

.into(imageView);

如果加载发生错误会重复三次请求,三次都失败才会显示预设的错误图片。


五、加载的回调监听

Picasso.with(this).load(url)

     .into(resultIv, newCallback() {

              @Override

              public void  onSuccess() {

                    //加载成功

              }

              @Override

              public void onError() {

                      //加载失败

             }

});


六、修改图片尺寸

resize(int targetWidth, intt argetHeight)

resizeDimen(int targetWidthResId, int targetHeightResId)

注意:resize(600, 0)表示图片宽度600,高度等比拉伸


七、设置拉伸剪切类型

centerCrop():和reszie()配套使用,resize尺寸后,不拉伸截取中间部分显示

centerInside():和reszie()配套使用,rresize尺寸后,等比拉神全部部分显示

fit():不能和reszie()一起使用,非等比拉伸填满ImageView


八、自定义图片转换

1. 自定义Transformation

class RotateTransformation implements Transformation{

      @Override

      public Bitmaptransform(Bitmap source) {

            Bitmap roteBmp = BitmapUtils.rotateBitmap(source,30);

            if(roteBmp != source) {

                  source.recycle();

             }

             return  roteBmp;

      }

      @Override

       public  Stringkey() {

             return "square";

        }

}

2. 设置Transformation

Picasso.with(this).load(R.mipmap.test).transform(new RotateTransformation()).into(normalIV);


八、其他设置

1. 无淡入淡出效果

 noFade()

2. 设置图片质量

config(Bitmap.Config.RGB_565)

注:默认使用ARGB_8888

3. 设置不使用缓存和硬盘存储

memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)

        Picasso默认会使用设备的15%的内存作为内存图片缓存,且现有的api无法清空内存缓存。我们可以在查看大图时放弃使用内存缓存。


九、Picasso优化

1. 设置内存缓存大小和标记

Picasso picasso = newPicasso.Builder(this)

.memoryCache(new LruCache(10 << 20))//设置内存缓存大小10M

.indicatorsEnabled(true) //设置左上角标记,主要用于测试

.build();

注标记:红色-从网络下载,蓝色-从磁盘加载,绿色-从内存加载

2. 设置Picasso单例模式

Picasso.setSingletonInstance(picasso);

注:一般在Application的onCreate()中设置一次


十、示例代码

百度网盘: http://pan.baidu.com/s/1nvEXreh 

你可能感兴趣的:(Picasso使用详解)