You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Android端Lottie动画启动页配置后无显示问题

问题分析

你核心的错误是将包含Android View组件(ConstraintLayout、LottieAnimationView)的布局文件放在了drawable目录下——drawable目录仅用于存放Drawable类型资源(如shape、layer-list、bitmap等),无法解析View组件,系统加载启动主题时无法识别该资源,导致启动背景失效,冷启动时无任何显示,直接等待Flutter初始化完成后进入主页面。

解决方案

1. 添加Lottie依赖

在Android模块的build.gradle(Module级别)中添加Lottie依赖:

dependencies {
    // 保留原有依赖,新增以下内容
    implementation 'com.airbnb.android:lottie:6.4.0' // 使用最新稳定版本
}

2. 创建独立的启动页Activity

新建SplashActivity.kt(或Java版本),用于承载Lottie动画:

class SplashActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 隐藏标题栏、设置全屏
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE)
        window.setFlags(
            WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN
        )

        setContentView(R.layout.activity_splash)

        // 监听Lottie动画结束,跳转至Flutter主页面
        val lottieView = findViewById<LottieAnimationView>(R.id.lottie_splash)
        lottieView.addAnimatorListener(object : Animator.AnimatorListener {
            override fun onAnimationStart(animation: Animator?) {}
            override fun onAnimationEnd(animation: Animator?) {
                startActivity(Intent(this@SplashActivity, MainActivity::class.java))
                finish()
            }
            override fun onAnimationCancel(animation: Animator?) {}
            override fun onAnimationRepeat(animation: Animator?) {}
        })
    }
}

3. 编写启动页布局文件

在res/layout目录下新建activity_splash.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black">

    <com.airbnb.lottie.LottieAnimationView
        android:id="@+id/lottie_splash"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:lottie_autoPlay="true"
        app:lottie_rawRes="@raw/test_splash"
        app:lottie_speed="1.0"
        app:lottie_loop="false"/> <!-- 禁用循环,动画结束后跳转 -->
</androidx.constraintlayout.widget.ConstraintLayout>

4. 修改AndroidManifest.xml配置

将SplashActivity设为启动入口,调整MainActivity的配置:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.test">
   <application
        android:label="test"
        android:name="${applicationName}"
        android:icon="@mipmap/ic_launcher">
        <!-- 启动页Activity -->
        <activity
            android:name=".SplashActivity"
            android:exported="true"
            android:theme="@style/LaunchTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <!-- Flutter主Activity -->
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:theme="@style/NormalTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <meta-data
              android:name="io.flutter.embedding.android.NormalTheme"
              android:resource="@style/NormalTheme"
              />
        </activity>
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
</manifest>

5. 清理错误资源

删除drawable、drawable-21目录下的splash_lottie.xml文件。

内容的提问来源于stack exchange,提问作者Wassef Hassine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 20:25:54