Picasso

作者: 帅气的欧巴 | 来源:发表于2016-04-21 14:50 被阅读292次

    Picasso

    Android 平台一款强大的开源图片下载缓存库。

    项目地址:https://github.com/square/picasso

    文档介绍:http://square.github.io/picasso/

    特点:

    (1)可以自动检测 adapter 的重用并取消之前的下载

    (2)图片变换

    (3)可以加载本地资源

    (4)可以设置占位资源

    (5)支持 debug 模式

    介绍:

    1、简单调用 就是一句话:  传递context ,图片url,要加载的View

    Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

    很多常见Android图像加载缺陷都由毕Picasso自动处理:

    1.在adapter中需要取消已经不在视野范围的ImageView图片资源的加载,否则会导致图片错位,Picasso已经解决了这个问题。

    2.使用复杂的图片压缩转换来尽可能的减少内存消耗

    3.自带内存和硬盘二级缓存功能

    特性:

    1、在Adapter中下载图片,自动重用缓存 和 取消下载。

    @Override

    public void getView(int position, View convertView, ViewGroup parent) {

           SquaredImageView view = (SquaredImageView) convertView;

           if (view == null) {

                 view = new SquaredImageView(context);

          }

           String url = getItem(position);

           Picasso.with(context).load(url).into(view);   //只需要一句话,无需管理

    }

    2、图片变化:对图片进行处理,可以更好的适应布局,节省内存开销

    Picasso.with(context).load(url)

    .resize(50, 50)   //调整大小,节省内存

    .centerCrop()     //裁剪模式

    .into(imageView)

    当然我们也可以自定义需求,实现 Transformation

    public class CropSquareTransformation implements Transformation {

      @Override

      public Bitmap transform(Bitmap source) {

          int size = Math.min(source.getWidth(), source.getHeight());

          int x = (source.getWidth() - size) / 2;

          int y = (source.getHeight() - size) / 2;

          Bitmap result = Bitmap.createBitmap(source, x, y, size, size);

          if (result != source) {

               source.recycle();

          }

          return result;

    }

          @Override public String key() {

                     return "square()";

           }

    }

    CropSquareTransformation的对象传递给实例的 transform 方法即可。

    3、加载占为图以及错误图片

    Picasso.with(context)

    .load(url)

    .placeholder(R.drawable.user_placeholder)    //占位用

    .error(R.drawable.user_placeholder_error)    //错误显示

    .into(imageView);

    4、资源加载

    Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);

    Picasso.with(context).load("file:///android_asset/DvpvklR.png").into(imageView2);

    Picasso.with(context).load(new File(...)).into(imageView3);

    Download

    Jar包下载

    Gradle:

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

    如果想了解其原理和更多用法,请参看:

    http://blog.csdn.net/chdjj/article/details/49964901 

    相关文章

      网友评论

          本文标题:Picasso

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