3

我做了什么:

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

4 回答 4

10

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

要使其工作,请执行以下操作:

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

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

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

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

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

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

您可以从不同的地方(例如 lottie 文件或官方示例应用程序)获取动画,或者使用 Adob​​e After Effects 自己制作。

于 2017-04-30T00:38:02.550 回答
3

如果没有 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);
    }
}
于 2018-05-10T13:50:20.187 回答
0

添加上一个答案。您需要添加一个正式的 Assets 文件夹。我在 Mac 上找到的最简单的方法(可能也适用于 Windows)是右键单击 Java -> 新建 -> 文件夹 -> 资产文件夹。

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

过程图

于 2017-05-06T16:51:36.703 回答
0

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

  1. 在 app 文件夹下创建 assets 文件夹。
  2. 将所有你的.JSON 动画文件放在 assets 文件夹中
  3. android:src="@drawable/image"如果您看到此删除它,请不要使用。
  4. 检查您的 Airbnb Lottie 存储库版本 从此处'com.airbnb.android:lottie:2.8.0'检查最新版本

就是这样,我希望这会有所帮助。

于 2019-11-18T17:06:33.813 回答