android Lottie动画显示为静止图像,但未播放

zi8p0yeb  于 2023-05-27  发布在  Android
关注(0)|答案(4)|浏览(436)

我正在编写一个应用程序,并希望有一个Lottie动画作为我的启动画面,因为我正在学习Java,因为我编码这个应用程序,我做了一个测试应用程序,看看事情将如何工作。我发现几乎任何Lottie动画都只显示为静止图像,不播放/循环动画。我跟着guide on LottieFiles website和我在other questions上找到的信息,但我仍然没有设法让动画播放。以下正是我所补充的:
我的应用程序的Gradle依赖项:

dependencies {  
        implementation 'com.airbnb.android:lottie:3.6.1'
}

到我的布局XML:

<com.airbnb.lottie.LottieAnimationView
        android:id="@+id/splashlottie"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:lottie_fileName="opening_book.json" //Even tried placing the file in raw and using app:lottie_rawRes="@raw/opening_book"
        app:lottie_autoPlay="true"
        app:lottie_loop="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

在我的活动中:

LottieAnimationView splashscreen;
        splashscreen = findViewById(R.id.splashlottie);

        splashscreen.animate();
        splashscreen.playAnimation();

我不知道我到底做错了什么,因为我甚至尝试了各种不同的Lottie动画文件,并将相同的文件放置在原始和资产下。API级别是否是动画无法播放的原因?

rslzwgfq

rslzwgfq1#

看起来你做得对。有没有可能动画是completely disabled on your phone

huwehgph

huwehgph2#

我可以使用以下代码运行动画:

val imageView = view.findViewById<LottieAnimationView>(R.id.image_view)
imagView.playAnimation()

xml代码:

<com.airbnb.lottie.LottieAnimationView
    android:id="@+id/image_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:lottie_fileName="womensDay.json"
    app:layout_constraintBottom_toTopOf="@+id/button_first"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textview_first"
    app:lottie_loop="true"/>

有几件事要记住:
1.确保你把你的json文件放在了asset文件夹中,如果没有的话就创建一个。参考:https://stackoverflow.com/a/50907775/5745574
1.只是为了测试,尝试给你的视图绝对尺寸说200dp(宽度和高度)。这可能是你的视图没有正确的维度的情况。
1.尝试动画一个不同的json文件,您的文件可能已损坏
1.尝试将您的lottieView放置在ViewGroup中(任何类型,例如LinearLayout)

  1. Lottie动画在API级别16及更高级别中得到支持
0wi1tuuw

0wi1tuuw3#

我想指定一些关于不播放动画的东西。如果你使用LottieAnimationView,或者使用图片url,或者使用lottie json url,比如toggle,你可能需要以编程方式启动动画,即使你在xml中设置了app:lottie_autoPlay="true";

fun LottieAnimationView.setImageOrAnimationFromUrl(imageOrLottieUrl : String?) {
    if (imageOrLottieUrl?.endsWith(".json") == true) {
        //lottie json url
        this.setAnimationFromUrl(imageOrLottieUrl,imageOrLottieUrl)
        this.animate()
        this.playAnimation()
    } else {
        //normal image url
        Glide.with(this).load(imageOrLottieUrl).circleCrop().into(this)
    }
}
2ledvvac

2ledvvac4#

这是没有lottieView.playAnimation()的工作,因为lottie_autoPlay=“true”:

<com.airbnb.lottie.LottieAnimationView
            android:id="@+id/anim_view"
            android:layout_width="256dp"
            android:layout_height="256dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:lottie_rawRes="@raw/anim_radio_waves"
            app:lottie_autoPlay="true"
            app:lottie_loop="true"/>

也检查你的动画json:lottie player

相关问题