Избегайте мерцания при переключении с изображения низкого разрешения на GIF с помощью Fresco.

Я загружаю GIF-файлы в SimpleDraweeViews в RecyclerView с помощью Fresco.

Я хотел бы сначала загрузить статическую миниатюру, пока загружается 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

Спасибо!


person Bea    schedule 01.06.2017    source источник


Ответы (1)


Вы можете использовать RetainingDataSourceSubscriber, как описано здесь: https://github.com/facebook/fresco/pull/1328

person Alexander Oprisnik    schedule 02.06.2017