跳至主要内容

已弃用的启动画面 API 迁移

在 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 元素。在此元素中,识别定义启动画面为 io.flutter.embedding.android.SplashScreenDrawableandroid:theme 属性和 meta-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 属性指定的主题的定义。此主题指定应用程序的启动主题。确保 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>