如何获取 Lottie 动画中可用帧的总数?

7

我在我的Android应用中使用随机Lottie动画。我需要知道Lottie动画中使用的总帧数。根据总帧数,我想循环播放动画从第1帧到某个帧。例如,如果Lottie文件包含60帧,则我想将动画执行从1到任何小于60的数字。

我正在使用以下依赖项

implementation 'com.airbnb.android:lottie:3.4.2'

在查看 Lottie 页面时,您可以看到帧数。 - s_o_m_m_y_e_e
Lottie文件并非从Lottie网站下载,而是由设计团队发送的。 - Vishal Naikawadi
2个回答

19

你可以在json文件中看到第一帧和最后一帧的计数。ip表示第一帧,op表示最后一帧。

example image


注意,在某些Lottie文件中可能会有多个ipop。在这种情况下,第一个ipop是整个文件的帧数。 - undefined

0
使用 addLottieOnCompositionLoadedListener 方法来获取你的 Lottie 的 Composition
binding.myLottie.addLottieOnCompositionLoadedListener { composition ->
    val startFrame = composition.startFrame
    val endFrame = composition.endFrame
    //will log start/end frame values
    Log.d(TAG, "startFrame : $startFrame, endFrame : $endFrame") 
}

要定位到动画的特定部分,请使用setMinAndMaxFrame()

binding.myLottie.addLottieOnCompositionLoadedListener { composition ->
    val startFrame = composition.startFrame
    val endFrame = composition.endFrame
    if (maxFrame < endFrame) {
        binding.myLottie.setMinAndMaxFrame(1, maxFrame)
    }
}

阅读这里,了解有关循环动画特定部分的更多信息。


getMaxFrame() 返回 0.0。 - Vishal Naikawadi
1
它给我一个错误,LottieComposition.getStartFrame只能从同一库(com.airbnb.android:lottie)中调用。 - Vishal Naikawadi
@VishalNaikawadi,您能发布此部分的代码和XML吗? - Ben Shmuel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接