在 Flutter 2.5 之前,Flutter 應用可以透過在其應用清單檔案 (AndroidManifest.xml) 的元資料中定義啟動屏,透過在其 FlutterActivity 中實現 provideSplashScreen,或兩者兼而有之,來新增啟動屏。這會在 Android 啟動屏顯示到 Flutter 繪製第一幀的短暫時間內顯示。此方法自 Flutter 2.5 起已被棄用。Flutter 現在會自動保持 Android 啟動屏顯示,直到繪製第一幀。

要從定義自定義啟動屏遷移到僅為您的應用定義自定義啟動屏,請按照您應用自定義啟動屏在 2.5 版本釋出之前是如何定義的步驟進行操作。

FlutterActivity 中定義的自定義啟動屏

  1. 找到您應用中 FlutterActivity 內的 provideSplashScreen() 實現,然後刪除它。此實現應涉及將您應用的自定義啟動屏構建為 Drawable。例如

    java
    @Override
    public SplashScreen provideSplashScreen() {
        // ...
        return new DrawableSplashScreen(
            new SomeDrawable(
                ContextCompat.getDrawable(this, R.some_splash_screen)));
    }
  2. 請使用後續章節中的步驟,以確保您的 Drawable 啟動屏(在上例中為 R.some_splash_screen)已正確配置為您應用的自定義啟動屏。

在清單檔案中定義的自定義啟動屏

  1. 找到您應用的 AndroidManifest.xml 檔案。在此檔案中,找到 activity 元素。在此元素內,識別 android:theme 屬性和定義啟動屏為 io.flutter.embedding.android.SplashScreenDrawablemeta-data 元素,並更新它。例如

    xml
    <activity
        // ...
        android:theme="@style/SomeTheme">
      // ...
      <meta-data
          android:name="io.flutter.embedding.android.SplashScreenDrawable"
          android:resource="@drawable/some_splash_screen"
          />
    </activity>
  2. 如果未指定 android:theme 屬性,請新增該屬性併為應用的啟動屏定義啟動主題

  3. 刪除 meta-data 元素,因為 Flutter 不再使用它,但它可能會導致崩潰。

  4. 在您應用的 style 資源中,找到由 android:theme 屬性指定的the theme 定義。此主題指定了您應用的啟動主題。確保 style 屬性配置了 android:windowBackground 屬性,其中包含您的自定義啟動屏。例如

    xml
    <resources>
        <style
            name="SomeTheme"
            // ...
            >
            <!-- Show a splash screen on the activity. Automatically removed when
                 Flutter draws its first frame -->
            <item name="android:windowBackground">@drawable/some_splash_screen</item>
        </style>
    </resources>