Cómo agregar una pantalla de presentación

Palabras clave: splashscreen

Si tu app implementa una pantalla de presentación personalizada o usa un tema de selector, mígrala a la biblioteca de SplashScreen, disponible en Jetpack, para garantizar que se muestre correctamente en todas las versiones de Wear OS.

Consulta las instrucciones de implementación paso a paso de esta página para aprender a agregar una pantalla de presentación con la biblioteca de SplashScreen, de modo que la pantalla cumpla con los lineamientos de diseño.

Cómo agregar dependencias

Agrega la siguiente dependencia al archivo build.gradle del módulo de tu app:

Groovy

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

Kotlin

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

Asegúrate de usar la versión 1.0.1 o una posterior para obtener compatibilidad con las dimensiones predeterminadas de Wear OS.

Cómo agregar un tema

Crea un tema de la pantalla de presentación en res/values/styles.xml. El elemento superior depende de la forma del ícono:

  • Si el ícono es redondo, usa Theme.SplashScreen.
  • Si tiene otra forma, usa Theme.SplashScreen.IconBackground.

Usa windowSplashScreenBackground para completar el fondo con un solo color negro. Establece los valores de postSplashScreenTheme en el tema que debe usar la actividad y windowSplashScreenAnimatedIcon en un elemento de diseño (animado o no):

<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 usas un ícono no redondo, debes establecer un color de fondo blanco debajo de él. En ese caso, usa el Theme.SplashScreen.IconBackground como tema superior y establece el atributo 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>

Los otros atributos son opcionales.

Cómo crear un elemento de diseño para el tema

Los temas de la pantalla de presentación requieren un elemento de diseño para pasar al atributo windowSplashScreenAnimatedIcon. Por ejemplo, para crearlo, agrega un nuevo archivo res/drawable/splash_screen.xml y usa el ícono de selector de apps y el tamaño correcto del ícono de la pantalla de presentación:

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

El tamaño del ícono de la pantalla de presentación se define en res/values/dimens.xml y difiere en función de si es redondo:

<?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 no redondo, y, por lo tanto, debe usar el fondo del ícono:

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

Cómo especificar el tema

En el archivo de manifiesto de tu app (AndroidManifest.xml), reemplaza el tema de la actividad inicial (por lo general, los que definen un elemento del selector o se exportan de otro modo) por el tema que creaste en el paso anterior:

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

Cómo actualizar tu actividad inicial

Instala la pantalla de presentación en la actividad inicial antes de llamar a super.onCreate():

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

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

Recursos adicionales

Obtén más información sobre las pantallas de presentación en general y cómo puedes usarlas en tu app.