Picasso:一款强大的图片下载和缓存库.

A powerful image downloading and caching library for Android



简单使用方法:

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

Picasso优点:

   不仅实现了图片异步加载的功能,还解决了android中加载图片的一些常见的问题;

1.解决图片错位的问题

2.使用复杂的图片压缩转换减少内存消耗

3.自带内存和硬盘二级缓存功能。


4.如果加载错误会重复三次请求,如果都失败则显示错误图片.error(R.drawable.xxx)方法

网络请求比较可靠;



底层源码的理解:

Cache缓存类

lrucach缓存 主要是get 和 set 方法 存储的结构采用的是LinkedHashMap


这map中实现了LRU算法 (Least Recently Used近期最少使用算法)


this.map = new LinkedHashMap<String, Bitmap>(0, 0.75f, true);

特性:

因为可能会涉及多线程,所以在存取的时候都会加锁。

而且每次set操作后都会判断当前缓存区是否已满,

如果满了就清掉最少使用的图形

在Picasso中比较耗时的操作就在异步线程中BitmapHunter

onlyScaleDowm方法

对大图片的缓存占内存比较多。




Glide图片加载类库

Glide is a fast and efficient open source media management and

image loading framework for Android that wraps media decoding,

memory and disk caching, and resource pooling into a simple and

easy to use interface.


Glide是一种快速高效的开源媒体管理库,图片加载网络框架,包括了

解码,内存和硬盘缓存,是一种简单易用的内置资源池的接口框架


简单使用方法:(与picasso基本一致)

Glide.with(this).load(imageUrl).into(imageView);

也具有图片加载失败的是指定图片的方法

Glide.with(this).load(imageUrl).placeholder(R.mipmap.ic_launcher)

.error(R.mipmap.ic_launcher).into(imageView);

还有缓存策略在load方法后加入

diskCacheStrategy(DiskCacheStrategy.ALL)

以及优先级等。

支持设置动画

Glide.with(this).load(imageUrl).animate(R.anim.item_alpha_in).into(imageView);

设置动态Gif的加载方法

 Glide.with(this).load(imageUrl).asBitmap().into(imageView);//显示gif静态图片

  Glide.with(this).load(imageUrl).asGif().into(imageView);//显示gif动态图片

  缓存的动态清理

  Glide.get(this).clearDiskCache();//清理磁盘缓存 需要在子线程中执行

  Glide.get(this).clearMemory();//清理内存缓存  可以在UI主线程中进行





 Picasso和Glide两种加载网络图片框架的比较?

 Glide比较屌啦!!,因为Glide比较新一点。(切~~ 瞎扯淡)

 其实,两个框架都有各自的优势

 Glide和Picasso的比较:

 相对Picasso来说, Glide.with()方法可以加载Acticity和Framgment,而Picasso只能放Context!

 --- Glide胜利(+1)

 Gilde加载图片占用更少的内存,因为Glide默认的Bitmap格式是RGB_565 ,比ARGB_8888格式的

 内存开销要小一半,,但是将Glide设置成ARGB_8888内存占用依然还是比picasso小

 --- Glide胜利(+1)

 由于Glide牺牲大小当然图片效果当然理论上当然比不上Picasso

 --- Picasso胜利(+1)

 磁盘缓存方案,当两种框架同时加载一张相同大小的图片 Glide 缓存的图片和 ImageView的尺寸相同,

 而 Picasso 缓存的图片和原始图片的尺寸相同。Picasso只缓存一张全尺寸,当在其他地方再次以不同

 大小显示图片时,Picasso通过计算来转换尺寸显示,而Glide却需要为每种大小的图片缓存一次,需要

 再次发送网络请求获取图片。所以Gilde比较消耗流量

 --- Picasso胜利(+1)

 但是Glide的这种方式优点是加载显示非常快。而Picasso的方式则因为需要在

 显示之前重新调整大小而导致一些延迟.但是我看来,消耗部分流量来提升流畅的还是比较值得的。

 --- Glide胜利(+1)

 Glide的杀手锏 能够加载gif动态图,而Picasso对此却无能为力。。

 --- Glide胜利(+1)

 Picasso (v2.5.1)的大小约118kb,而Glide (v3.5.2)的大小约430kb。

 --- Picasso胜利(+0.5)

  总的来说Glide加载图像以及磁盘缓存的方式都要优于Picasso,速度更快,并且Glide更有利于减少

  OutOfMemoryError的发生,GIF动画是Glide的杀手锏。不过Picasso的图片质量更高

  个人比较推荐使用Glide。