添加启动画面

关键词:启动画面

如果您的应用实现了自定义启动画面或使用了启动器主题,请将您的应用迁移到 Jetpack 中提供的 SplashScreen 库,以确保它在所有 Wear OS 版本上都能正确显示。

请参阅本页逐步实施说明,了解如何使用SplashScreen库添加启动画面,以确保屏幕符合设计指南

添加依赖项

将以下依赖项添加到应用模块的build.gradle文件中

Groovy

dependencies {
    implementation "androidx.core:core-splashscreen:1.2.0-alpha02"
}

Kotlin

dependencies {
    implementation("androidx.core:core-splashscreen:1.2.0-alpha02")
}

确保您使用的是1.0.1或更高版本,以获得对默认 Wear OS 尺寸的支持。

添加主题

res/values/styles.xml中创建一个启动画面主题。父元素取决于图标的形状

  • 如果图标是圆形的,请使用Theme.SplashScreen
  • 如果图标形状不同,请使用Theme.SplashScreen.IconBackground

使用windowSplashScreenBackground用单一黑色填充背景。将postSplashScreenTheme的值设置为 Activity 应使用的主题,并将windowSplashScreenAnimatedIcon设置为可绘制对象或动画可绘制对象

<resources>
    <style name="Theme.App" parent="@android:style/Theme.DeviceDefault" />

    <style name="Theme.App.Starting" parent="Theme.SplashScreen">
        <!-- Set the splash screen background to black -->
        <item name="windowSplashScreenBackground">@android:color/black</item>
        <!-- Use windowSplashScreenAnimatedIcon to add a drawable or an animated
             drawable. -->
        <item name="windowSplashScreenAnimatedIcon">@drawable/splash_screen</item>
        <!-- Set the theme of the Activity that follows your splash screen. -->
        <item name="postSplashScreenTheme">@style/Theme.App</item>
    </style>
</resources>

如果您使用非圆形图标,则需要在图标下方设置白色背景颜色。在这种情况下,请使用Theme.SplashScreen.IconBackground作为父主题并设置windowSplashScreenIconBackgroundColor属性

<style name="Theme.App.Starting" parent="Theme.SplashScreen.IconBackground">
    ...
    <!-- Set a white background behind the splash screen icon. -->
    <item name="windowSplashScreenIconBackgroundColor">@android:color/white</item>
</style>

其他属性是可选的。

为主题创建可绘制对象

启动画面主题需要一个可绘制对象才能传递到windowSplashScreenAnimatedIcon属性中。例如,您可以通过添加一个新文件res/drawable/splash_screen.xml并使用应用启动器图标和正确的启动画面图标大小来创建它

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:width="@dimen/splash_screen_icon_size"
        android:height="@dimen/splash_screen_icon_size"
        android:drawable="@mipmap/ic_launcher"
        android:gravity="center" />
</layer-list>

启动画面图标大小在res/values/dimens.xml中定义,具体取决于图标是否为圆形

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Round app icon can take all of default space -->
    <dimen name="splash_screen_icon_size">48dp</dimen>
</resources>

…或非圆形,因此必须使用图标背景

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- Non-round icon with background must use reduced size to fit circle -->
    <dimen name="splash_screen_icon_size">36dp</dimen>
</resources>

指定主题

在您的应用清单文件(AndroidManifest.xml)中,将启动 Activity 的主题(通常是定义启动项或以其他方式导出的主题)替换为您在上一步中创建的主题

<manifest>
    <application android:theme="@style/Theme.App.Starting">
       <!-- or -->
       <activity android:theme="@style/Theme.App.Starting">
          <!-- ... -->
</manifest>

更新您的启动 Activity

在调用super.onCreate()之前,在启动 Activity 中安装您的启动画面

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        // Handle the splash screen transition.
        installSplashScreen()

        super.onCreate(savedInstanceState)
        setContent {
            WearApp("Wear OS app")
        }
    }
}

其他资源

一般来说,了解更多关于启动画面以及如何在您的应用中使用它们。