Frecso学习

最近学习了下Facebook的Fresco。
地址在这里:项目官方地址

里面可以看到官方的中文说明、以及GitHub上的托管代码

有一篇关于Fresco结构和运行机制的文档:请点击这里.
推荐一篇译文

简要介绍

基本上可以理解为:

  1. FaceBook构建了DraweeView来替代ImageView,使用起来也和使用ImageView很接近;
  2. 封装了一整套的Uri显示图片的机制;
  3. Native管理图片内存,绕过了JVM,单独写了一套内存管理系统。

一些比较麻烦的点

Fresco目前还处于发展中,还存在一些使用上不是很好的地方,例如:

  1. 不太容易设置加载时的占位图(placeholder)。
    目前需要每一个View独立设置,这很不友好。
    有些情况下,我们需要动态设置占位图,但是这需要重新setHierarchy,多次setHierarchy会有比较大的开销。ide

  2. 不太容易根据url随时获取缓存过的图片。
    有的时候,我们希望获取到图片,但是不要第一时间就展示出来,而只是缓存下来,在制定的时机再触发显示。
    目前还没有找到比较方便的方式。如果大家知道,可以先告诉我.

官方关于占位图的说法是:

占位图(Placeholde)

在调用setController 或者 setImageURI 之后,占位图开始显示,直到图片加载完成。

XML 中属性值: placeholderImage

Hierarchy builder中的方法: setPlaceholderImage

Hierarchy method: setPlaceholderImage

默认值: a transparent ColorDrawable

默认缩放类型: centerInside。