廖祜秋 · 更新于 2018-11-28 11:00:42

(图片请求)Image Requests

本教程内容来源于:http://fresco-cn.org
采用 知识共享 署名 4.0 国际 许可协议 进行许可

如果你需要的ImageRequest仅仅是一个URI,那么ImageRequest.fromURI就足够了,在多图请求及图片复用中,有这样的用法。

否则,你需要ImageRequestBuilder来做更多的事情。

Uri uri;

ImageDecodeOptions decodeOptions = ImageDecodeOptions.newBuilder()
    .setBackgroundColor(Color.GREEN)
    .build();

ImageRequest request = ImageRequestBuilder
    .newBuilderWithSource(uri)
    .setAutoRotateEnabled(true)
    .setLocalThumbnailPreviewsEnabled(true)
    .setLowestPermittedRequestLevel(RequestLevel.FULL_FETCH)
    .setProgressiveRenderingEnabled(false)
    .setResizeOptions(new ResizeOptions(width, height))
    .build();

ImageRequest 的属性和成员

最低请求级别

Image pipeline 加载图片时有一套明确的请求流程

  1. 检查内存缓存,有如,立刻返回。这个操作是实时的。
  2. 检查未解码的图片缓存,如有,解码并返回。
  3. 检查磁盘缓存,如果有加载,解码,返回。
  4. 下载或者加载本地文件。调整大小和旋转(如有),解码并返回。对于网络图来说,这一套流程下来是最耗时的。

setLowestPermittedRequestLevel允许设置一个最低请求级别,请求级别和上面对应地有以下几个取值:

  • BITMAP_MEMORY_CACHE
  • ENCODED_MEMORY_CACHE
  • DISK_CACHE
  • FULL_FETCH

如果你需要立即取到一个图片,或者在相对比较短时间内取到图片,否则就不显示的情况下,这非常有用。

上一篇: 图片的修改 下一篇: 自定义View