使用 Fresco 从低分辨率图像切换到 GIF 时避免闪烁

Avoid flicker when switching from low res image to GIF using Fresco

我正在使用 Fresco 将 GIF 加载到 RecyclerView 的 SimpleDraweeView 中。

我想在下载 GIF 时先加载静态缩略图,然后在 GIF 可用时加载。

它可以正常工作,但是在将缩略图换成 GIF 时会出现白色闪烁。有什么办法可以避免吗?

将 fadeDuration 设置为 0 没有帮助。我可以在缓存 GIF 时跳过缩略图,但理想情况下我希望在所有情况下都避免闪烁。

观点很简单:

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/gif_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

并且代码看起来也很简单:

DraweeController controller = Fresco.newDraweeControllerBuilder()
            .setLowResImageRequest(ImageRequest.fromUri(thumbnailUrl))
            .setUri(contentUrl)
            .setAutoPlayAnimations(true)
            .setOldController(draweeView.getController()).build();

draweeView.setController(controller);

这里有一个视频:https://www.dropbox.com/s/vkyqltm1hrrnvaz/gifFlicker.m4v?dl=0

它使用这个 GIF:http://www.furrytalk.com/wp-content/uploads/2015/01/kitten.gif

谢谢!

您可以按照此处的说明使用 RetainingDataSourceSubscriberhttps://github.com/facebook/fresco/pull/1328