Ajouter un écran de démarrage

Mots clés: splashscreen

Si votre application implémente un écran de démarrage personnalisé ou utilise un thème de lanceur, migrez-la vers la bibliothèque SplashScreen, disponible dans Jetpack, pour vous assurer qu'elle s'affiche correctement sur toutes les version de Wear OS.

Consultez les instructions d'implémentation détaillées de cette page pour découvrir comment ajouter un écran de démarrage à l'aide de la bibliothèque SplashScreen afin qu'il respecte les consignes de conception.

Ajouter des dépendances

Ajoutez la dépendance suivante au fichier build.gradle du module de votre application :

Groovy

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

Kotlin

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

Assurez-vous d'utiliser la version 1.0.1 ou une version ultérieure pour profiter de la prise en charge des dimensions Wear OS par défaut.

Ajouter un thème

Créez un thème d'écran de démarrage dans res/values/styles.xml. L'élément parent dépend de la forme de l'icône :

  • Si l'icône est circulaire, utilisez Theme.SplashScreen.
  • Si l'icône a une forme différente, utilisez Theme.SplashScreen.IconBackground.

Utilisez windowSplashScreenBackground pour remplir l'arrière-plan avec une couleur noire unie. Définissez les valeurs de postSplashScreenTheme sur le thème que l'activité doit utiliser et l'objet windowSplashScreenAnimatedIcon sur un drawable standard ou un drawable animé :

<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>

Si vous utilisez une icône non circulaire, vous devez définir une couleur d'arrière-plan blanche sous l'icône. Dans ce cas, utilisez Theme.SplashScreen.IconBackground comme thème parent et définissez l'attribut 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>

Les autres attributs sont facultatifs.

Créer un drawable pour le thème

Les thèmes de l'écran de démarrage nécessitent un drawable pouvant être transmis dans l'attribut windowSplashScreenAnimatedIcon. Par exemple, vous pouvez le créer en ajoutant un nouveau fichier res/drawable/splash_screen.xml et en utilisant l'icône du lanceur d'applications et la taille correcte de l'icône de l'écran de démarrage :

<?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>

La taille de l'icône de l'écran de démarrage est définie dans res/values/dimens.xml et varie selon que l'icône est circulaire :

<?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>

...ou non et doit donc utiliser l'arrière-plan de l'icône :

<?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>

Spécifier le thème

Dans le fichier manifeste de votre application (AndroidManifest.xml), remplacez le thème de l'activité de démarrage (généralement celui qui définit un élément de lanceur ou qui est exporté) par le thème que vous avez créé à l'étape précédente :

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

Mettre à jour votre activité de démarrage

Installez votre écran de démarrage dans l'activité de démarrage avant d'appeler super.onCreate() :

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

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

Ressources supplémentaires

Familiarisez-vous avec les écrans de démarrage en général et découvrez comment les utiliser dans votre application.