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

1.Picasso简介

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

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

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

2.主要特点

2.1Adapter downloads

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

@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图像处理与变换

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

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

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

Picasso.with(this).load("http://i.imgur.com/DvpvklR.png")
				.transform(new CropSquareTransformation()).into(iv_test2);

效果图如下:

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

如:

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中的图片文件等。

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

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

未经允许不得用于商业目的

android:强大的图片下载和缓存库Picasso,布布扣,bubuko.com

时间: 2024-11-08 15:42:19

android:强大的图片下载和缓存库Picasso的相关文章

Picasso:一个专为Android打造的强大的图片下载和缓存库

简介 在Android应用中,图片消费了大量的资源,却为应用提供了很好的视觉体验.幸运的是,Picasso为你的应用提供了非常容易的图片加载方式--通常一行代码就可以搞定! Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); Picasso处理了Android上图片加载的许多坑: 1)在Adapter中,处理了ImageView的循环利用和取消下载. 2)耗费最小的内存处理了复杂的图

MapleBacon 是一个非常棒的图片下载和缓存库

http://www.oschina.net/ios/codingList/367/ios-image http://www.oschina.net/p/maplebacon MapleBacon 是一个非常棒的图片下载和缓存库,使用 Swift 开发,用于 iOS 系统. 示例代码: import MapleBacon @IBOutlet weak var imageView: UIImageView! if let imageURL = NSURL(string: "something.jp

Android 强大的图片加载缓存— Glide

在图片加载库烂大街的今天,选择一个适合自己使用的图片加载库已经成为了每一个Android开发者的必经之路.现在市面上知名的图片加载库有UIL,Picasso,Volley ImageLoader,Fresco以及我们今天的主角Glide.它们各有千秋,不能评定谁一定比谁好,只能说哪一个更适合你. 我的理解 下面我来谈一下个人对这些图片加载库的理解,如有错误,还望指教. Universal Image Loader:一个强大的图片加载库,包含各种各样的配置,最老牌,使用也最广泛. Picasso:

android开源项目:图片下载缓存库picasso

picasso是Square公司开源的一个Android图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能. picasso有如下特性: 在adapter中回收和取消当前的下载: 使用最少的内存完成复杂的图形转换操作: 自动的内存和硬盘缓存: 图形转换操作,如变换大小,旋转等,提供了接口来让用户可以自定义转换操作: 加载载网络或本地资源: 可以转换为自己需要的request(Square公司开源的另一个网络支持库:retrofit支持转化

Android图片下载以及缓存框架

实际开发中进行图片下载以及缓存的框架 介绍一下开发中常见图片加载框架的使用和对比一下优缺点. 1.Picasso 框架 在Android中开发,常需要从远程获取图片并显示在客户端,当然我们可以使用原生HttpURLConnection和AsyncTask等操作来完成,但并不推荐,因为这样不仅需要我们编写大量的代码, 还需要处理缓存和下载管理等,最好自己封装成库或者采用第三方库: 使用HttpUrlConnection和AsyncTask实现远程图片下载: 使用HttpUrlConnection和

(源代码分析)Android-Universal-Image-Loader (图片异步载入缓存库)的使用配置

转载请注明出处:http://blog.csdn.net/u011733020 前言: 在Android开发中,对于图片的载入能够说是个老生常谈的问题了,图片载入是一个比較坑的地方.处理不好,会有各种奇怪的问题,比方 载入导致界面卡顿.程序crash. 因此 怎样高效的载入大量图片.以及怎样载入大分辨率的图片到内存.是我们想要开发一款优质app时不得不去面对与解决的问题. 通常开发中,我们仅仅有两种选择:① 使用开源框架  ②自己去实现处理图片的载入与缓存. 通常一開始让我们自己去写,我们会无从

多图片下载、缓存及SDWebImage

首先介绍一下如果不使用SDWebImage,自己写代码实现多图片的下载及缓存的思路: 这里只提供了一个思路作为了解,因为多图片下载.缓存的实现,使用三方SDWebImage特别的简单,以后开发过程中也是使用这种方式,不用自己写代码,所以这里只提供一个思路,关于SDWebImage的使用将在最后进行解释: 1 //声明一个用来缓存图片的可变字典 imagesDict,字典的value值为图片,key值为图片网址 2 //声明一个字典用来存储操作对象value值为(NSOperation *oper

android异步任务图片下载(进度条提示进度)

一.AsyncTask介绍 Android提供了几种在其他线程中访问UI线程的方法. Activity.runOnUiThread( Runnable ) View.post( Runnable ) View.postDelayed( Runnable, long ) Hanlder 这些类或方法同样会使你的代码很复杂很难理解.然而当你需要实现一些很复杂的操作并需要频繁地更新UI时这会变得更糟糕. 为了解决这个问题,Android 1.5提供了一个工具类:AsyncTask,它使创建需要与用户界

图片下载本地缓存时间戳显示图片方法

来源:http://ask.dcloud.net.cn/article/511 源码下载 参考文章http://ask.dcloud.net.cn/article/256http://ask.dcloud.net.cn/article/397 说明:为了方便,里面使用的图片来源是从上面文章中的源码项目获取的.说明:参考了上面文章中的思路,然后自己重新写了一个较为完整的图片本地缓存显示工具.功能1.第一次显示图片时下载到本地,然后之后如果本地存在缓存(根据url),则显示本地缓存的图片2. 基于p