【发布时间】:2017-03-13 19:48:26
【问题描述】:
我使用 Fresco 库在 RecyclerView 和 android 中显示动画 gif 文件。 我的代码很简单,我在 onBindViewHolder() 中执行此操作:
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setUri(url)
.setAutoPlayAnimations(true)
.build();
simpleDraweeView.setController(controller);
一切都很好,但是当我向上或向下滚动时,似乎 GIF 图像没有被缓存和重新加载。所以我决定像简单的图像一样显示 GIF 文件的预览。 ImageRequest 的 setLocalThumbnailPreviewsEnabled(true) 似乎不适用于 GIF 图像。 然后我尝试将 ImageDecodeOptionsBuilder 与 setForceStaticImage(true) 一起使用 - 它将 GIF 显示为静态图像(几乎是我需要的,但我需要在加载静态图像后启动动画)。 这是我所有的代码:
Uri imageUri = Uri.parse(url);
ImageDecodeOptionsBuilder decodeOptionsBuilder = new ImageDecodeOptionsBuilder();
decodeOptionsBuilder.setForceStaticImage(true);
decodeOptionsBuilder.setDecodePreviewFrame(true);
ImageDecodeOptions imageDecodeOptions = new ImageDecodeOptions(decodeOptionsBuilder);
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(imageUri)
.setImageDecodeOptions(imageDecodeOptions)
.setLocalThumbnailPreviewsEnabled(true)
.build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setAutoPlayAnimations(true)
.build();
simpleDraweeView.setController(controller);
我也尝试过使用 setAutoPlayAnimations(true/false) 和其他参数(如 decodeOptionsBuilder.setDecodePreviewFrame(true)),但仍然没有成功。
所以我的问题是:如何将静态图像显示为 GIF 的预览图像(如占位符)?如果它是 GIF 的第一个(或其他)帧,那就太酷了。任何帮助表示赞赏。
【问题讨论】:
标签: android gif animated-gif fresco