Lottie для Android — Ошибка при завышении класса com.airbnb.lottie.LottieAnimationView

Что я сделал:

Шаг 1)

Добавлена ​​следующая зависимость в graddle:

compile 'com.airbnb.android:lottie:2.0.0-beta4'

Шаг 2)

Airbnb не говорит нам, где размещать анимированные файлы JSON. Вместо этого я видел в их примерах приложений, что он помещается в app/src/main/assets. Поэтому я создал эту папку и вставил туда несколько анимаций JSON.

Шаг 3)

В activity_main.xml добавлено следующее:

<com.airbnb.lottie.LottieAnimationView
    android:id="@+id/animation_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:lottie_fileName="EmptyState.json"
    app:lottie_loop="true"
    app:lottie_autoPlay="true"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

При запуске приложения я получаю следующую ошибку:

04-29 12:55:37.253 21877-21877/com.example.ross.testitout E/AndroidRuntime: FATAL EXCEPTION: main

Process: com.example.ross.testitout, PID: 21877

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ross.testitout/com.example.ross.testitout.MainActivity}: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class com.airbnb.lottie.LottieAnimationView 

at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)

Интересно, что я делаю неправильно. Также не хватает подробных руководств, и это позор, новичку вроде меня нужно потратить намного больше времени, чем необходимо, чтобы разобраться во всем.

Спасибо.


person Rosenberg    schedule 29.04.2017    source источник
comment
вы использовали centerCrop вместо центра?   -  person Muhammad Waleed    schedule 30.04.2017


Ответы (4)


Чтобы ответить на мой собственный вопрос, проблема заключается в отсутствии папки официальных ресурсов. Вы можете создать его вручную, но это не сработает.

Чтобы заставить его работать, сделайте следующее:

  1. Откройте свой проект в Android Studio.

  2. Выберите что-нибудь в папках вашего проекта, расположенных слева.

  3. Нажмите alt+insert, появится всплывающее меню.

  4. Выберите подменю «Папка», а затем нажмите «Папка ресурсов».

Это создаст папку ресурсов, необходимую для хранения ваших анимаций.

Оттуда вы можете вставить анимацию JSON и связать ее там.

Вы можете получить анимацию из разных мест (например, из файлов лотереи или официального примера приложения) или сделать их самостоятельно с помощью Adobe After Effects.

person Rosenberg    schedule 30.04.2017
comment
Эквивалентным сочетанием клавиш является Command+n в Android Studio для Mac OS X (вместо alt-insert выше - person flutter; 26.09.2017
comment
Вы только что спасли мой день +1 за ваш ответ. - person Anuj Sharma; 07.02.2019

Без папки Assets вы также можете сделать это с папкой res/raw:

Поместите check_mark_done.json в путь: каталог app/src/main/res/raw. Вы можете скачать check_mark_done.json с здесь

Файл макета XML, используемый для LottieAnimationView

<com.airbnb.lottie.LottieAnimationView
          android:id="@+id/lottieAnimationView"
          android:layout_width="144dp"
          android:layout_height="144dp"
          android:layout_margin="16dp"
          app:lottie_autoPlay="true"
          app:lottie_loop="true"
          app:lottie_rawRes="@raw/check_mark_done" />

В файле активности:

LottieAnimationView animationView = findViewById(R.id.lottieAnimationView);
startCheckAnimation();

Определение startCheckAnimation():

private void startCheckAnimation() {
    ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f).setDuration(5000);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            animationView.setProgress((Float) valueAnimator.getAnimatedValue());
        }
    });

    if (animationView.getProgress() == 0f) {
        animator.start();
    } else {
        animationView.setProgress(0f);
    }
}
person Garg's    schedule 10.05.2018

Чтобы добавить к предыдущему ответу. Вам нужно добавить официальную папку Assets. Самый простой способ, который я нашел на Mac (может также работать для Windows), — щелкнуть правой кнопкой мыши Java -> Создать -> Папка -> Папка Assets.

Надеюсь, это кому-то поможет, я трачу много времени на поиск ошибки.

Изображение процесса

person Jaafar Mahdi    schedule 06.05.2017

Я столкнулся с той же проблемой, я сделал все, что упомянуто в приведенных выше ответах. Я следую простым шагам.

  1. Создайте папку активов в папке приложения.
  2. поместите все ваши файлы анимации .JSON в папку с ресурсами
  3. Не используйте android:src="@drawable/image", если вы видите это, удалите его.
  4. проверьте свою версию репозитория Airbnb Lottie 'com.airbnb.android:lottie:2.8.0' проверьте последнюю версию здесь

вот и я надеюсь, что это поможет.

person Asesha George    schedule 18.11.2019