Aggiungi una schermata iniziale

Se la tua app implementa una schermata iniziale personalizzata o utilizza un tema di avvio app, esegui la migrazione della tua app alla libreria SplashScreen, disponibile in Jetpack, per assicurarti che venga visualizzata correttamente su tutte le versioni di Wear OS.

Consulta le istruzioni di implementazione passo passo in questa pagina per scoprire come aggiungere una schermata iniziale utilizzando la libreria SplashScreen in modo che la schermata soddisfi le linee guida per la progettazione.

Aggiungere dipendenze

Aggiungi la seguente dipendenza al file build.gradle del modulo dell'app:

Groovy

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

Kotlin

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

Assicurati di utilizzare la versione 1.0.1 o successive per ottenere il supporto delle dimensioni Wear OS predefinite.

Aggiunta di un tema

Crea un tema per la schermata iniziale in res/values/styles.xml. L'elemento principale dipende dalla forma dell'icona:

  • Se l'icona è rotonda, utilizza Theme.SplashScreen.
  • Se l'icona ha una forma diversa, utilizza Theme.SplashScreen.IconBackground.

Usa windowSplashScreenBackground per riempire lo sfondo con un unico colore nero. Imposta i valori di postSplashScreenTheme sul tema che l'attività deve utilizzare e windowSplashScreenAnimatedIcon su una risorsa disegnabile o disegnabile animata:

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

Se utilizzi un'icona non rotonda, devi impostare un colore di sfondo bianco sotto l'icona. In questo caso, utilizza Theme.SplashScreen.IconBackground come tema principale e imposta l'attributo 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>

Gli altri attributi sono facoltativi.

Crea una risorsa disegnabile per il tema

I temi della schermata iniziale richiedono una risorsa disegnabile da passare all'attributo windowSplashScreenAnimatedIcon. Ad esempio, puoi crearlo aggiungendo un nuovo file res/drawable/splash_screen.xml e utilizzando l'icona di avvio delle app e le dimensioni corrette dell'icona della schermata iniziale:

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

Le dimensioni dell'icona della schermata iniziale sono definite in res/values/dimens.xml e variano a seconda che l'icona sia rotonda:

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

…o non rotonda e quindi deve utilizzare lo sfondo dell'icona:

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

Specifica il tema

Nel file manifest dell'app (AndroidManifest.xml), sostituisci il tema dell'attività iniziale, in genere quelle che definiscono un elemento di avvio o che vengono esportate in altro modo, con il tema che hai creato nel passaggio precedente:

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

Aggiornare l'attività iniziale

Installa la schermata iniziale nell'attività iniziale prima di chiamare super.onCreate():

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

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

Risorse aggiuntive

Scopri di più sulle schermate iniziali in generale e su come utilizzarle nella tua app.