简述:Fresco是Facebook出品的一个超级强大的开源图片加载库,支持Gif,Webp格式的图片加载,支持渐进式显示等功能。
DevRing & Demo地址:https://github.com/LJYcoder/DevRing
学习/参考地址:
https://www.fresco-cn.org/docs/index.html
http://blog.csdn.net/wyb112233/article/details/49637685
http://blog.csdn.net/android_ls/article/details/53137867
优点:
1)内存自动回收。图片不可见时,会及时自动释放所占用的内存,尽可能地避免OOM
2)三级缓存机制。两级内存缓存(解码的与未解码的)+一级磁盘缓存,提升加载速度,节省内存占用空间
3)支持各种加载场景。如动图加载、高斯模糊等常见的图片加载场景。另外还提供了独特的渐进式加载、先加载小图再加载大图,加载进度等功能(很强大)。
缺点:
1)体积大(很胖)。较其他主流图片库体积要大不少
2)侵入性较强。须使用它提供的SimpleDraweeView来代替ImageView加载显示图片
综合来说,如果你的应用对图片的显示、加载等要求高的话,那就建议使用Fresco。但如果要求没那么高的话就用Glide或其它库吧。关于Fresco与Glide的对比可以参考http://www.jianshu.com/p/6729dc17586b
https://blog.csdn.net/ljy_programmer/article/details/78273267
Fresco 中设计有一个叫做 image pipeline 的模块。它负责从网络,从本地文件系统,本地资源加载图片。为了最大限度节省空间和CPU时间,它含有3级缓存设计(2级内存,1级文件)。Fresco 中设计有一个叫做 Drawees 模块,方便地显示loading图,当图片不再显示在屏幕上时,及时地释放内存和空间占用。Fresco 支持 Android2.3(API level 9) 及其以上系统。(摘自:http://fresco-cn.org/)
有关Fresco的使用教程请绕道:http://fresco-cn.org/docs/index.html#_
Fresco相比其他图片库如Picasso,UIL,Glide相比,所具有的最重要的几个独有特性:
- 在Android 5.0以下系统,图片不存储在Java heap,而是存储在ashmemheap,中间的字节buffer同样位于native heap。使应用有更多内存空间,降低OOM风险,减少GC次数。
渐进式的JPEG呈现。 - 图片可以在任意点进行裁剪,而不是中心,即自定义居中焦点。
- JPEG可以在native进行resize,避免了在缩小图片时的OOM风险。
- 支持Gif和WebP。