Adicionar uma tela de apresentação

Se o app implementar uma tela de apresentação personalizada ou usar um tema de tela de início, migre-o para a biblioteca SplashScreen, disponível no Jetpack, para garantir que ela seja mostrada corretamente em todas as versões do Wear OS.

Consulte as instruções detalhadas de implementação nesta página para aprender a adicionar uma tela de apresentação usando a biblioteca SplashScreen para que a tela atenda às diretrizes de design.

Adicionar dependências

Adicione a dependência abaixo ao arquivo build.gradle do módulo do app:

Groovy

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

Kotlin

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

Confira se você está usando a versão 1.0.1 ou mais recente para ter suporte para as dimensões padrão do Wear OS.

Adicionar um tema

Crie um tema de tela de apresentação em res/values/styles.xml. O elemento pai depende da forma do ícone:

  • Se o ícone for redondo, use Theme.SplashScreen.
  • Se o ícone tiver uma forma diferente, use Theme.SplashScreen.IconBackground.

Use windowSplashScreenBackground para preencher o plano de fundo com uma única cor preta. Defina os valores de postSplashScreenTheme como o tema que a atividade precisa usar e windowSplashScreenAnimatedIcon como um drawable ou um drawable animado:

<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 você usar um ícone não redondo, defina uma cor branca como plano de fundo abaixo do ícone. Nesse caso, use o Theme.SplashScreen.IconBackground como tema pai e defina o 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>

Os outros atributos são opcionais.

Criar um drawable para o tema

Os temas de tela de apresentação exigem um drawable para transmitir o atributo windowSplashScreenAnimatedIcon. Por exemplo, é possível criá-lo adicionando um novo arquivo res/drawable/splash_screen.xml e usando o ícone na tela de início do app e o tamanho correto do ícone da tela de apresentação:

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

O tamanho desse ícone é definido em res/values/dimens.xml e varia se o ícone é 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>

…ou não redondo e, portanto, deve usar o plano de fundo do ícone:

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

Especificar o tema

No arquivo de manifesto do app (AndroidManifest.xml), substitua o tema da atividade inicial, geralmente aqueles que definem um item da tela de início ou exportados, para o tema criado na etapa anterior:

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

Atualizar a atividade inicial

Instale a tela de apresentação na atividade inicial antes de chamar super.onCreate():

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

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

Outros recursos

Saiba mais sobre telas de apresentação em geral e como elas podem ser usadas no seu app.