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

Android 12上Flutter启动页显示双Logo的问题求助

Android 12 启动出现两次闪屏的解决思路

Android 12(API 31)引入了SplashScreen API,系统会默认生成一个包含应用图标的闪屏页。如果你的旧闪屏配置未适配这个新机制,就会出现「系统默认小图标闪屏」→「自定义正常闪屏」的两次显示问题。

以下是两种可行的解决思路:

方案一:适配官方SplashScreen API(推荐)

这是Android 12+官方推荐的闪屏实现方式,能统一各版本的闪屏体验:

  1. 升级编译版本:将build.gradle中的compileSdkVersion和targetSdkVersion设置为31及以上
  2. 定义闪屏主题:在res/values-v31/styles.xml(或全局styles.xml)中添加闪屏主题:
<style name="SplashTheme" parent="Theme.SplashScreen">
    <!-- 闪屏背景色,与原有自定义闪屏背景一致 -->
    <item name="android:windowBackground">@color/splash_bg</item>
    <!-- 设置闪屏显示的图标,替换为你的启动页Logo -->
    <item name="windowSplashScreenAnimatedIcon">@drawable/your_splash_logo</item>
    <!-- 可选:设置图标的背景色,避免图标与背景冲突 -->
    <item name="windowSplashScreenIconBackgroundColor">@color/logo_bg</item>
    <!-- 设置闪屏结束后切换到的应用主题 -->
    <item name="postSplashScreenTheme">@style/AppTheme</item>
</style>
  1. 配置启动Activity:在AndroidManifest.xml中,把启动Activity的theme设置为上述SplashTheme:
<activity
    android:name=".SplashActivity"
    android:theme="@style/SplashTheme">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
  1. 启动Activity代码调整:在SplashActivity的onCreate方法中,先调用installSplashScreen()再加载布局:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 初始化官方闪屏
    SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
    setContentView(R.layout.activity_splash);
    
    // 可选:如果需要等待数据加载再关闭闪屏,可设置保留条件
    // splashScreen.setKeepOnScreenCondition(() -> isDataLoading);
}

方案二:禁用系统默认闪屏(保留旧实现)

如果不想改动原有闪屏逻辑,可通过配置禁用Android 12+的默认闪屏:

  1. 针对Android 12+定义主题:在res/values-v31/styles.xml中添加如下主题:
<style name="SplashTheme" parent="AppTheme">
    <!-- 保留原有闪屏的windowBackground配置 -->
    <item name="android:windowBackground">@drawable/your_old_splash_drawable</item>
    <!-- 禁用系统默认闪屏图标 -->
    <item name="android:windowSplashScreenAnimatedIcon">@null</item>
    <!-- 禁用系统默认闪屏背景 -->
    <item name="android:windowSplashScreenBackground">@null</item>
</style>
  1. 替换启动Activity主题:将AndroidManifest.xml中启动Activity的theme替换为上述SplashTheme即可。

额外检查点

  • 确认原有闪屏是否通过windowBackground实现(而非单独Activity中放置ImageView),后者在Android 12+更易出现两次闪屏问题
  • 检查是否存在多版本styles.xml(如values-v21、values-v31)的配置冲突,确保Android 12+使用的主题配置正确

内容的提问来源于stack exchange,提问作者Nicolas Zein

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:05:29