使用 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
谢谢!
您可以按照此处的说明使用 RetainingDataSourceSubscriber
:
https://github.com/facebook/fresco/pull/1328
我正在使用 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
谢谢!
您可以按照此处的说明使用 RetainingDataSourceSubscriber
:
https://github.com/facebook/fresco/pull/1328