android 图片加载和缓存开源项目 Picasso

标签: android 图片 缓存 | 发表时间:2013-12-13 02:54 | 作者:zxs19861202
分享到:
出处:http://www.iteye.com

Picasso – Android系统的图片下载和缓存类库

Picasso 是Square开源的一个用于Android系统下载和缓存图片的项目。该项目和其他一些下载图片项目的主要区别之一是:使用4.0+系统上的HTTP缓存来代替磁盘缓存。

Picasso 的使用是非常简单的,例如:

帮助
1
Picasso.with(context).load(" http://i.imgur.com/DvpvklR.png.into(imageView"));
Picasso有如下特性:

处理Adapter中的 ImageView 回收和取消已经回收ImageView的下载进程
使用最少的内存完成复杂的图片转换,比如把下载的图片转换为圆角等
自动添加磁盘和内存缓存
具体介绍

在Adapter中下载

自动检测Adapter中的ImageView重用和取消不必要的下载

帮助

  1. @Override public void getView(int position, View convertView, ViewGroup parent) {
  2. SquaredImageView view = (SquaredImageView) convertView;
  3. if (view == null) {
  4. view = new SquaredImageView(context);
  5. }
  6. String url = getItem(position);Picasso.with(context).load(url).into(view);
  7. }
复制代码

 


图片转换

转换图片以适合所显示的ImageView,来减少内存消耗

帮助

  1. Picasso.with(context)
  2. .load(url)
  3. .resize(50, 50)
  4. .centerCrop()
  5. .into(imageView)
复制代码


还可以设置自定义转换来实现高级效果,例如下面的矩形特效(把图片居中裁剪为矩形)

 

帮助

  1. public class CropSquareTransformation implements Transformation {
  2. @Override public Bitmap transform(Bitmap source) {
  3. int size = Math.min(source.getWidth(), source.getHeight());
  4. int x = (source.getWidth() - size) / 2;
  5. int y = (source.getHeight() - size) / 2;
  6. Bitmap result = Bitmap.createBitmap(source, x, y, size, size);
  7. if (result != source) {
  8. source.recycle();
  9. }
  10. return result;
  11. }@Override public String key() { return "square()"; }
  12. }
复制代码

 


用该类示例调用函数 RequestBuilder.transform(Transformation) 即可。

占位符图片

Picasso支持下载和加载错误占位符图片。

帮助
Picasso.with(context)
.load(url)
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(imageView);
如果重试3次(下载源代码可以根据需要修改)还是无法成功加载图片 则用错误占位符图片显示。

支持本地资源加载

从 Resources, assets, files, content providers 加载图片都支持

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

调用函数 Picasso.setDebug(true) 可以在加载的图片左上角显示一个 三角形 ,不同的颜色代表加载的来源

红色:代表从网络下载的图片

黄色:代表从磁盘缓存加载的图片

绿色:代表从内存中加载的图片

如果项目中使用了OkHttp库的话,默认会使用OkHttp来下载图片。否则使用HttpUrlConnection来下载图片。

http://square.github.io/picasso/

其他功能查看项目主页: http://github.com/square/picasso

参考项目: https://github.com/nostra13/Android-Universal-Image-Loader

https://github.com/mitmel/Android-Image-Cache

https://github.com/novoda/ImageLoader

https://github.com/square/okhttp



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [android 图片 缓存] 推荐:

android 图片加载和缓存开源项目 Picasso

- - 移动开发 - ITeye博客
Picasso – Android系统的图片下载和缓存类库. Picasso 是Square开源的一个用于Android系统下载和缓存图片的项目. 该项目和其他一些下载图片项目的主要区别之一是:使用4.0+系统上的HTTP缓存来代替磁盘缓存. Picasso 的使用是非常简单的,例如:. 处理Adapter中的 ImageView 回收和取消已经回收ImageView的下载进程.

Android图片下载缓存库picasso解析

- - 移动开发 - ITeye博客
picasso是Square公司开源的一个Android图形缓存库,地址 http://square.github.io/picasso/,可以实现图片下载和缓存功能. picasso使用简单,如下. 在adapter中回收和取消当前的下载;. 使用最少的内存完成复杂的图形转换操作;. 图形转换操作,如变换大小,旋转等,提供了接口来让用户可以自定义转换操作;.

Android 三大图片缓存原理、特性对比

- - Trinea
这是我在 MDCC 上分享的内容(略微改动),也是源码解析第一期发布时介绍的源码解析后续会慢慢做的事. 从总体设计和原理上对几个图片缓存进行对比,没用到他们的朋友也可以了解他们在某些特性上的实现. 上篇关于选择开源项目的好处及如何选择开源项目可见: 开源项目使用及选型. Universal ImageLoader 是很早开源的图片缓存,在早期被很多应用使用.

Android性能优化之实现双缓存的图片异步加载工具(LruCache+SoftReference) - 拿来即用

- - CSDN博客推荐文章
之前在郭大神的博客看到使用LruCache算法实现图片缓存的.这里仿效他的思路,自己也写了一个. 并加入ConcurrentHashMap<String, SoftReference<Bitmap>>去实现二级缓存,因为ConcurrentHashMap是多个锁的线程安全,支持高并发.很适合这种频繁访问读取内存的操作..

android截取屏幕图片

- - BlogJava-首页技术区
                mButton.setText("截屏次数:"+mPrintNum);.         //1.构建Bitmap   .         //2.获取屏幕   .         //3.保存Bitmap    .             //文件   .

android图片压缩方法

- - CSDN博客移动开发推荐文章
第一:我们先看下质量压缩方法.         image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中  .         while ( baos.toByteArray().length / 1024>100) {  //循环判断如果压缩后图片是否大于100kb,大于继续压缩         .

Google Maps for Android 将提供完整的离线缓存功能

- - 谷奥——探寻谷歌的奥秘
在今天的 次世代Google Maps发布会上,Google宣布了下一次Google Maps for Android更新的新功能:完整的离线缓存. 尽管现在的Google Maps for Android其实也可以离线使用,但仅限你之前浏览过的地方. 而新的完全版离线缓存功能则允许你指定一个区域,比如伦敦市区,在有WiFi或3G的情况下实现下载全部伦敦市区精确到街道级别的地图,然后即可离线使用.

android如何让webview里的资源访问本地缓存

- - 移动开发 - ITeye博客
继承并实现一个ContentProvider. 注册AndroidManifest.xml. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

Android 视频缩略图的缓存机制和异步加载

- - 移动开发 - ITeye博客
关注微信号:javalearns   随时随地学Java. 在这次的工作开发项目中,涉及到一个视频缩略图的视频列表;这个在大家看来,制作视频缩略图就是两行代码就搞定的事. 确实是这样的,百度一下,每个 帖子都知道制作视频缩略图的方法,在这里确实也是一样的,但是我要实现的是让缩略图 在ListView上显示,而且不会出现卡顿,其实也不是特别难,确实很实用;.

android 比较靠谱的图片压缩

- - ITeye博客
第一:我们先看下质量压缩方法:. image.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中. //循环判断如果压缩后图片是否大于100kb,大于继续压缩. baos.reset();//重置baos即清空baos.