Анимация Android Lottie не запускается автоматически, если она отображается с помощью Epoxy / DataBinding

Я использую Lottie и Epoxy в своем проекте Android с DataBinding. Я хотел бы запустить анимацию с помощью LottieImageView при привязке RecyclerView, но LottieImageView не запускает анимацию, хотя для нее установлено значение autoPlay=true.

Контроллер эпоксидной смолы ниже:

class MainController : EpoxyController() {

    var currentSnappedPosition = 0
        set(value) {
            field = value
            requestModelBuild()
        }

    override fun buildModels() {
        repeat(10) {
            ItemBindingModel_()
                .id(modelCountBuiltSoFar)
                .isSnapped(currentSnappedPosition == modelCountBuiltSoFar)
                .addTo(this)
        }
    }
}

currentSnappedPosition обновляется, когда элемент RecyclerView привязывается, а затем вызывается rquestModelBuild().

Файл макета ниже:

<?xml version="1.0" encoding="utf-8"?>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>

        <import
            type="android.view.View" />

        <variable
            name="isSnapped"
            type="boolean" />

    </data>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.airbnb.lottie.LottieAnimationView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:visibility="@{isSnapped ? View.VISIBLE : View.GONE }"
            app:lottie_autoPlay="true"
            app:lottie_loop="true"
            app:lottie_rawRes="@raw/lunar_new_year"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:text="not snapped..."
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="@{isSnapped ? View.GONE : View.VISIBLE }"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

    </FrameLayout>

</layout>

LottieAnimationView устанавливается видимым, когда элемент привязывается.

Весь проект находится на GitHub:

Кто-нибудь знает, как автоматически запускать, когда LottieAnimationView установлен видимым?


person MikakoTabe    schedule 21.01.2020    source источник


Ответы (1)


Не могу комментировать, поэтому добавляю сюда. Не могли бы вы сообщить мне, подключив отладчик в методе buildModel(), который вызывается до того, как вы привяжете представление ресайклера?

person vishal_ratna    schedule 21.01.2020