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.
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Cómo migrar la implementación de la pantalla de presentación a Android 12 y versiones posteriores
- Pantallas de presentación
- Cómo integrar Acciones en apps con widgets de Android