SimpleDraweeView 在使用 Fresco 替换图像时出现黑色闪烁

SimpleDraweeView black filckering on replacement image with Fresco

我正在尝试使用相同的方式替换多张图片(来自本地存储) 一段时间后,黑色闪烁消失,效果很好。

观看视频: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'

简单绘图视图。如何避免黑屏闪烁?

谢谢

(full discussion here)

很遗憾,这是一个已知问题。如果您设置新的 URI,您将看到占位符图像,直到新图像准备就绪。当您有大图像并且经常切换它们时(如您的示例),这一点尤其明显。

我们将在未来的某个时候修复此问题(请参阅此 pull request)。 现在,您可以手动将 RetainingDataSourceSupplier 实现从所述拉取请求复制到您的项目并使用它类似于 MainActivity.java 示例:

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