如何在 Java 中以编程方式添加 Lottie 动画

Inf*_*ort 3 java android android-studio lottie

我尝试以编程方式将 Lottie Animation 添加到 Java (Android),但一直失败。我将在下面显示我的代码,我需要从drawable更改为Lottie。

这是可绘制对象的代码:

if (status.equals("connect")) {

            vpnBtn.setBackgroundResource(R.drawable.but_connect_light);
            logTv.setTextColor(getResources().getColor(R.color.font_color));

        } else if (status.equals("connecting")) {

            vpnBtn.setBackgroundResource(R.drawable.but_connecting_dark);
            logTv.setTextColor(getResources().getColor(R.color.font_color));

        } else if (status.equals("connected")) {

            vpnBtn.setBackgroundResource(R.drawable.but_disconnect_dark);
            logTv.setTextColor(getResources().getColor(R.color.purple));

        } else if (status.equals("failed")) {

            vpnBtn.setBackgroundResource(R.drawable.but_connect_dark);

        }
Run Code Online (Sandbox Code Playgroud)

这是上面相关的xml

<ImageView
        android:id="@+id/vpnBtn"
        android:layout_alignParentBottom="true"
        android:layout_gravity="center_horizontal"
        android:tag="1"
        android:layout_width="140dp"
        android:layout_height="140dp"
        android:background="@drawable/but_connect_light"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="50dp"/>
Run Code Online (Sandbox Code Playgroud)

Chr*_*rth 5

上述解决方案对我不起作用,导致应用程序崩溃。

尝试使用这个:

animationView.setAnimation(R.raw.your_lottie_file)

或者,将其添加到Infinite 的答案中

String vpnsBtn;

if (check.equals("night")){

    switch (status) {
        case "connect":

            vpnBtn.setVisibility(View.VISIBLE);
            vpnsBtn = R.raw.disconnected;
            logTv.setTextColor(getResources().getColor(R.color.font_color));

            break;
        case "connecting":

            vpnBtn.setVisibility(View.VISIBLE);
            vpnsBtn = R.raw.connectingg;
            logTv.setTextColor(getResources().getColor(R.color.font_color));

            break;
        case "connected":

            vpnBtn.setVisibility(View.VISIBLE);
            vpnsBtn = R.raw.connected
            logTv.setTextColor(getResources().getColor(R.color.purple));

            break;
        case "failed":

            vpnBtn.setVisibility(View.VISIBLE);
            vpnsBtn = R.raw.disconnected;

            break;
    }

}else {

    switch (status) {
        case "connect":

            vpnBtn.setVisibility(View.VISIBLE);
            vpnsBtn = R.raw.disconnected;
            logTv.setTextColor(getResources().getColor(R.color.font_color));

            break;
        case "connecting":

            vpnBtn.setVisibility(View.VISIBLE);
            vpnsBtn = R.raw.connectingg;;
            logTv.setTextColor(getResources().getColor(R.color.font_color));

            break;
        case "connected":

            vpnBtn.setVisibility(View.VISIBLE);
            vpnsBtn = R.raw.connected;;
            logTv.setTextColor(getResources().getColor(R.color.purple));

            break;
        case "failed":

            vpnBtn.setVisibility(View.VISIBLE);
            vpnsBtn = R.raw.disconnected;

            break;
    }
}

LottieAnimationView animationView = findViewById(R.id.vpnBtn);
animationView.setImageAssetsFolder("vpnconnect");
animationView.setAnimation(vpnsBtn);
animationView.loop(true);
animationView.playAnimation();
Run Code Online (Sandbox Code Playgroud)