android:强大的图片下载和缓存库Picasso

来源:互联网 发布:qq的smtp服务器端口 编辑:程序博客网 时间:2024/05/16 17:21
android:强大的图片下载和缓存库Picasso

1.Picasso简介

Picasso是Square公司出品的一个强大的图片下载和缓存图片库。官方网址是:http://square.github.io/picasso/

只需要一句代码就可以将图片下载并设置到ImageView上。

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


2.主要特点

2.1Adapter downloads

使用ListView,GridView的时候,自动检测Adapter的重用(re-use),取消下载,使用缓存。

?
1
2
3
4
5
6
7
8
9
@Overridepublic void getView(intposition, View convertView, ViewGroup parent) {
  SquaredImageView view = (SquaredImageView) convertView;
  if(view == null) {
    view = newSquaredImageView(context);
  }
  String url = getItem(position);
 
  Picasso.with(context).load(url).into(view);
}

2.2图像处理与变换

将图像进行变换,以更好的适应布局控件等,减小内存开销。

?
1
2
3
4
5
Picasso.with(context)
  .load(url)
  .resize(200,200)
  .centerCrop()
  .into(imageView)

当然,我们也可以写自己的变换类,但是必须实现Transformation接口,如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
     * 自定义接口,实现图像缩小为原来的一半
     */
    publicclass CropSquareTransformation implementsTransformation {
        @Override
        publicBitmap transform(Bitmap source) {
            intsize = Math.min(source.getWidth(), source.getHeight());
            intx = (source.getWidth() - size) / 2;
            inty = (source.getHeight() - size) / 2;
            Bitmap result = Bitmap.createBitmap(source, x, y, size, size);
            if(result != source) {
                source.recycle();
            }
            returnresult;
        }
 
        @Override
        publicString key() {
            return"square()";
        }
    }

然后设置transform方法就可以了:

?
1
2
Picasso.with(this).load("http://i.imgur.com/DvpvklR.png")
                .transform(newCropSquareTransformation()).into(iv_test2);

效果图如下:

\


2.3。支持设置加载之前的图片,和加载失败后的图片。

如:<喎�"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD48cD48cHJlIGNsYXNzPQ=="brush:java;">Picasso.with(this) .load("http://i.imgur.com/DvpvklR.png") .placeholder(R.drawable.abc) .error(R.drawable.ic_launcher) .transform(new CropSquareTransformation()) .into(iv_test1);

ImageView创建时显示abc.png,如果加载成功,显示的是DvpvklR.png,如果加载失败,显示ic_launcher.png.

2.4支持加载本地图片和sdcard中的图片文件等。

?
1
2
Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);
Picasso.with(context).load(newFile(...)).into(imageView2);


Picasso下载地址:http://square.github.io/picasso
/

0 0
原创粉丝点击