Fresco中SimpleDraweeView在替换图片时出现黑色闪烁问题

3

我正在尝试使用相同的方法替换多个图片(来自本地存储)。过一段时间后,黑屏闪烁消失了,开始正常工作。

观看视频:http://sendvid.com/q92ry52l

我只是这样做:mSimpleDraweeView.setImageURI("file://" + imagesList.get(index));

XML代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/fresco_image_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"/>
</RelativeLayout>

我正在使用 'com.facebook.fresco:fresco:0.13.0' 的 SimpleDraweeView。如何避免黑色闪烁?

谢谢。

1个回答

4

(点击此处查看完整讨论)

不幸的是,这是一个已知问题。如果您设置了新的 URI,您会看到占位图像,直到新图像准备就绪。当您有大型图像并且经常切换它们时(例如在您的示例中),尤其明显。

我们将在未来某个时候解决这个问题(请参见这个pull request)。 目前,您可以手动复制来自该 pull request 的 RetainingDataSourceSupplier 实现,并类似于 MainActivity.java 示例使用它:

PipelineDraweeControllerBuilder builder = Fresco.newDraweeControllerBuilder()...
builder.setDataSourceSupplier(retainingDataSourceSupplier);
draweeView.setController(builder.build());

1
提供如何使用“retainingDataSourceSupplier”的一些代码将会很有帮助。 - stavros.3p

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接