Lottie for android - 错误膨胀类com.airbnb.lottie.LottieAnimationView

时间:2017-04-29 16:06:00

标签: android lottie-android

我做了什么:

步骤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)

想知道我做错了什么。还有一个缺乏完整的教程,这是一种耻辱,像我这样的初学者需要花费的时间超过必要的时间来解决问题。

感谢。

4 个答案:

答案 0 :(得分:8)

要回答我自己的问题,问题是缺少官方资产文件夹。您可以手动创建它,但它无法正常工作。

要使其发挥作用,请执行以下操作:

  1. 在Android Studio中打开您的项目。

  2. 选择位于左侧的项目文件夹中的任何内容。

  3. alt + insert ,会弹出一个菜单。

  4. 选择子菜单“文件夹”,然后单击“资产文件夹”。

  5. 这将创建存储动画所需的资源文件夹。

    从那里开始,您可以插入JSON动画并将其链接到那里。

    您可以从各个地方(如lottie文件或官方示例应用)获取动画,或使用Adobe After Effects自行制作动画。

答案 1 :(得分:1)

如果没有Assets文件夹,您也可以使用res / raw文件夹执行此操作:

const questions = { iq_test: { questions: [ { question: 'Find the difference', choices: ['a1', 'a2', 'a1', 'a3'], correct: 0 }, { question: 'What is the next sequence', choices: ['2', '5', '56', '64'], correct: 3 }, { question: 'What should be the next letter', choices: ['c', 'z', 'e', 'f'], correct: 3 }] }, memory_test: { } } let retQuestions = questions.iq_test.questions.map(item => item); console.log(retQuestions);放在路径: app / src / main / res / raw 目录中。您可以从here

下载check_mark_done.json

用于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" />

startCheckAnimation()的定义:

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

答案 2 :(得分:0)

添加以前的答案。您需要添加官方Assets文件夹。我在Mac上找到的最简单的方法(也可能适用于Windows)是右键单击Java - &gt;新 - &gt;文件夹 - &gt;资产文件夹。

希望这有助于某人,我花了很多时间寻找错误。

Image of the process

答案 3 :(得分:0)

我遇到了上述答案中提到的所有问题,我都做了。我遵循简单的步骤。

  1. 在app文件夹下创建一个资产文件夹。
  2. 将所有您的.JSON动画文件放入资源文件夹
  3. 如果看到{@ {1}},请删除它。
  4. 检查您的Airbnb Lottie存储库版本android:src="@drawable/image",并检查here中的最新版本

就是这样,希望对您有所帮助。