图片加载框架Picasso

我写APP的时候发现要获取网络图片,最初我看别人博客自己写的时候发现成效不好,每次加载图片会有卡顿,因为自己没有用到图片的缓存,然后我在学长的建议下就选择使用图片加载框架Picasso,Picasso怎么使用的呢,其实官网上说的很明白了,接下来主要是给自己标记一下,对于以后的使用更加方便。

导入Picasso库

在app的gradle中的dependencies项中添加依赖

implementation 'com.squareup.picasso:picasso:2.71828'

然后sync

使用Picasso

使用就特别简单了,最基本的就是:

Picasso.get().load(url地址).into(控件id);

这样我们就实现了将网络上的一张图片设置到控件中去了
Picasso已经自动将Android上图片加载常见的的陷阱处理掉了,比如:

  • 在Adapter中处理ImageView循环和取消下载
  • 对复杂图像进行转换,使其占用最小的内存
  • 自动的内存和磁盘缓存
Adapter

我们在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.get().load(url).into(view);
}
图片转换
Picasso.get()
  .load(url)
  .resize(图片宽, 图片高)
  .centerCrop()
  .into(imageView)

当然我们也可以指定定制的转换方式来实现更高级的效果:

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()"; }
}

之后将该类的实例传入到transform方法

占位图
Picasso.with(this).load(album.getAlbumUrl())
        .placeholder(R.drawable.album)
        .error(R.drawable.album)
        .into(album_img);

placeholder就是没有加载出来显示的图片,error是加载失败显示的图片,我这里就用了一张图片。
这里写图片描述

资源加载

Resources, assets, files, content providers都是Picasso可加载的图片源类型

Picasso.get().load(R.drawable.landing_screen).into(imageView1);
Picasso.get().load("file:///android_asset/DvpvklR.png").into(imageView2);
Picasso.get().load(new File(...)).into(imageView3);
调试指示

开发时可以打开彩带显示来指示图片源,在Picasso实例调用setIndicatorsEnabled(true)即可
这里写图片描述


想详细了解的话还是去官网看会比较好。
官网链接:http://square.github.io/picasso/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值