原博客链接:http://linkyan.com/2013/11/picasso/

Jake Wharton大牛写的又一力作,链式API的优雅,类库的简洁,谁用谁喜欢.

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

简介

在你的Android应用程序如果想要显示大量图片,而且视觉效果丰富,高效稳定,需要大量的基础工作.Picasso可以帮你完成这些工作,通常只需要一行代码!

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

在Android中很多图片加载时的陷阱都由Picaaso帮你自动处理:

  • 在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.with(context).load(url).into(view);} 

图像转换

转换图片以更适应放入布局中,有效减少内存

Picasso.with(context)  .load(url)  .resize(50, 50)  .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()"; }} 

预留图片

下载图片完成前或错误时,Picasso提供一个预留图片(placeholer)API,加载默认图片.

Picasso.with(context).load(url).placeholder(R.drawable.user_placeholder).error(R.drawable.user_placeholder_error).into(imageView);

加载资源

Resources, assets, files, content providers,在Picasso中都是支持加载的.

Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);Picasso.with(context).load(new File("/images/oprah_bees.gif")).into(imageView2);

当然也有缺点

  1. 我们会发现,当我们想要获取缓存Bitmap的文件时,Picasso并没有这样的API,你只有在子线程中获取bitmap后,在存储一次.原因与HttpResponseCache类有关.

  2. 还没有对GIF做支持,我尝试过去支持,但是发现改动实在太大,遂放弃.老老实实用原来的.

  3. 超长图,还是用WebView解决吧,Picasso也做不到

谁在用?

豆瓣,蘑菇街,花瓣

更多相关文章

  1. 安卓日记——超简单的开发框架afinal
  2. Android(安卓)BaseAadapter 异步加载图片方法
  3. android:scaleType
  4. Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
  5. Android大图片裁剪终极解决方案
  6. android内存管理(二)
  7. Android(安卓)图片异步下载及缓存--Multithreading For Performa
  8. XUtils-Android(安卓)最火的快速开发框架
  9. Android(安卓)中 加载Bitmap时,造成的Out of memory 问题

随机推荐

  1. 秒启万台主机,腾讯云云硬盘数据调度架构演
  2. 百微秒时延,腾讯云云硬盘CBS架构深度解密
  3. 联邦计算:不暴露真实数据如何完成合作建模
  4. 腾讯云Elasticsearch集群规划及性能优化
  5. 降本提效,贝壳搜索推荐架构统一之路
  6. 实现全托管,腾讯云服务网格的架构演进
  7. Linux之文本处理的练习
  8. 动态记忆网络:向通用NLP更近一步
  9. 深入理解Java的接口和抽象类
  10. zabbix yum及package模块