如何在 arraylist 中添加动画 json 文件并在我们迭代时在屏幕上显示这些动画?

How to add animation json files in an arraylist & display those animations on the screen when we iterate?

我在 res 目录的 raw 文件夹中有动画 json 文件。我做了一个数据模型,我想在其中存储许多具有不同数据类型的属性。

数据模型

class ExerciseModel (
private var id:Int,
private var name:String,
private var isCompleted:Boolean,
private var isSelected:Boolean,
private var animationJson:String)

然后,我想创建此 class 的对象并将其存储在 ArrayList 中。作为,

object Constants {

    fun defaultExerciseList():ArrayList<ExerciseModel>{
        val exerciseList=ArrayList<ExerciseModel>()
        val squat =ExerciseModel(1,"Squat",false,false, R.raw.squat.json)
        exerciseList.add(squat)

我已经在 activity_main.xml 中添加了视图,但它不起作用。

<com.airbnb.lottie.LottieAnimationView
            android:id="@+id/exerciseAnimation"
            android:layout_width="300dp"
            android:layout_height="300dp"
            android:layout_centerInParent="true"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:lottie_autoPlay="true"
            app:lottie_fileName="jumping_jack.json"
            app:lottie_loop="true"
            app:lottie_speed="1" />

如何将动画 json 文件添加到数组列表中并使其显示在屏幕上?

更新型号代码:-

class ExerciseModel(
var id: Int,
var name: String,
var isCompleted: Boolean,
var isSelected: Boolean,
var animationJson: Int)

在数组中添加数据:-

val exerciseList=ArrayList<ExerciseModel>()
    val squat = ExerciseModel(1,"Squat",false,false, R.raw.squat)
    exerciseList.add(squat)
    val load = ExerciseModel(2,"Load",false,false, R.raw.load)
    exerciseList.add(load)
    val spring = ExerciseModel(3,"Spring",false,false, R.raw.spring)
    exerciseList.add(spring)

为动画添加这一行:-

exerciseAnimation.setAnimation(exerciseList[0].animationJson) //0 is your animationfile position

更新您的 xml 代码:-

<com.airbnb.lottie.LottieAnimationView
            android:id="@+id/exerciseAnimation"
            android:layout_width="300dp"
            android:layout_height="300dp"
            android:layout_centerInParent="true"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:lottie_autoPlay="true"
            app:lottie_loop="true"
            app:lottie_speed="1" />