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

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
@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.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
/**
      * 自定义接口,实现图像缩小为原来的一半
      */
     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方法就可以了:

?
1
2
Picasso.with( this ).load( "http://i.imgur.com/DvpvklR.png" )
                 .transform( new CropSquareTransformation()).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( new File(...)).into(imageView2);


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值