Flutter splash screen not working with launch_background.xml

6,584

Also make the changes in drawable-v21/launch_background.xml. This will be used for Android API Level 21 or higher.

Share:
6,584
pomon
Author by

pomon

Updated on December 28, 2022

Comments

  • pomon
    pomon over 1 year

    I can't seem to show my own splash screen, every time I launch the app the default, blank splash screen is shown even though I've set up everything in launch_background.xml and the other files in res. I've also set up all the relevant icons in drawable and mipmap.

    launch_background.xml:

    <!-- Modify this file to customize your launch splash screen -->
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <color android:color="@color/splash" />
        </item>
    
        <!-- You can insert your own image assets here -->
        <item>
            <bitmap
                android:gravity="center"
                android:src="@drawable/splash_icon" />
        </item>
    </layer-list>
    

    styles.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
        <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
            <!-- Show a splash screen on the activity. Automatically removed when
                 Flutter draws its first frame -->
            <item name="android:windowBackground">@drawable/launch_background</item>
        </style>
        <!-- Theme applied to the Android Window as soon as the process has started.
             This theme determines the color of the Android Window while your
             Flutter UI initializes, as well as behind your Flutter UI while its
             running.
             
             This Theme is only used starting with V2 of Flutter's Android embedding. -->
        <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
            <item name="android:windowBackground">?android:colorBackground</item>
        </style>
    </resources>
    

    colors.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="ic_launcher_background">#191919</color>
        <color name="splash">#191919</color>
    </resources>
    

    <activity> tag in AndroidManifest.xml:

    <activity
                android:name=".MainActivity"
                android:launchMode="singleTop"
                android:theme="@style/LaunchTheme"
                android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
                android:hardwareAccelerated="true"
                android:windowSoftInputMode="adjustResize">
                <!-- Specifies an Android theme to apply to this Activity as soon as
                     the Android process has started. This theme is visible to the user
                     while the Flutter UI initializes. After that, this theme continues
                     to determine the Window background behind the Flutter UI. -->
                <meta-data
                  android:name="io.flutter.embedding.android.NormalTheme"
                  android:resource="@style/LaunchTheme"
                  />
                <!-- Displays an Android View that continues showing the launch screen
                     Drawable until Flutter paints its first frame, then this splash
                     screen fades out. A splash screen is useful to avoid any visual
                     gap between the end of Android's launch screen and the painting of
                     Flutter's first frame. -->
                <meta-data
                  android:name="io.flutter.embedding.android.SplashScreenDrawable"
                  android:resource="@drawable/launch_background"
                  />
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
    

    The splash screen should show an image and a different background color but instead it just shows the default blank white screen. I'm not using a custom splash screen for this. I just want at least the colors to change but even that is not working.

  • Delmontee
    Delmontee over 2 years
    aaaargh!! That was the problem for me too! Thanks for the advice. this isn't mentioned in the flutter docs
  • Konstantin Kozirev
    Konstantin Kozirev over 2 years
    Path to that file from content root: android/app/src/main/res/drawable-v21/launch_background.xml , or press Ctrl+Shift+N and search for launch_background.xml you will see that there are two instances.
  • Dror Bar
    Dror Bar over 2 years
    This is currently not mentioned in the docs