Picasso和Glide的介绍及比较

来源:互联网 发布:网络打印机添加ip 编辑:程序博客网 时间:2024/05/19 17:03
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。
0 0
原创粉丝点击