Implementando a Core Splashscreen API

Igor Escodro
Android Dev BR
Published in
4 min readJul 15, 2021

O Android 12 nos trouxe uma nova funcionalidade para aprimorar a experiência do usuário, o suporte oficial a Splash Screens. Anteriormente, se o aplicativo precisasse desse recurso visual, seria necessário adicionar uma implementação customizada, levando a diferentes maneiras de se fazer. A mais recente versão do Android adiciona isso automaticamente para todos os aplicativos e permite personalizações usando simples parâmetros, mas infelizmente essa funcionalidade estava restrita apenas ao Android 12.

Entretanto, no dia 30 de junho de 2021 fomos introduzidos ao primeiro alpha da Core Splashscreen API, fornecendo compatibilidade com versões anteriores para as novas Splash Screen APIs. Usando essa biblioteca é possível implementar essa nova funcionalidade a partir da API 23, dando a mesma experiência visual em uma ampla variedade de versões do Android.

Mas antes de entrarmos na implementação, o que exatamente é uma Splash Screen?

O que é uma Splash Screen?

A Splash Screen é um feedback visual que é mostrado para o usuário enquanto o aplicativo está inicializando. Essa animação fornece uma experiência do usuário melhor porque o usuário não fica encarando uma tela vazia, mas ao invés disso é mostrado o ícone do aplicativo ou uma animação personalizada. Um exemplo mostrado na documentação oficial ilustra bem o seu uso:

Exemplo de Splash screen no Android Developers

Essa tela é mostrada em duas condições:

É importante ressaltar que a Splash Screen não irá ser exibida durante uma inicialização a quente (hot start). Isso significa que, por exemplo, se o usuário pressionar o botão home trazendo o aplicativo para segundo plano e reabri-lo antes do sistema destruir a Activity, a Splash Screen não será exibida.

Implementando a Splash Screen API

A nova Core Splashscreen API funciona apenas se a aplicação for compilada usando o Android 12. Uma vez que essa versão está atualmente em preview, precisamos atualizar a compileSdkVersion para essa versão no arquivo build.gradle. No futuro, quando o Android 12 estiver estável, a versão a ser usada é a API 31.

android {
compileSdkVersion "android-S" // Android 12 em preview
// compileSdkVersion 31 - quando o Android 12 estiver estável
}

Ainda nesse arquivo vamos adicionar a dependência para a biblioteca:

implementation "androidx.core:core-splashscreen:1.0.0-alpha01"

Após fazer a sincronização dos arquivos Gradle, precisamos atualizar nosso themes/values.xml (e também o tema em night/ se o aplicativo suportar tema escuro) com os novos parâmetros.

Primeiramente nós criamos um novo tema, no nosso exemplo ele irá se chama Theme.MySplash. Então adicionamos os seguintes parâmetros:

  • O style parent do tema precisa ser Theme.SplashScreen da biblioteca
  • windowSplashScreenBackground para configurar a cor de fundo
  • windowSplashScreenAnimatedIcon para configurar o ícone da Splash screen
  • postSplashScreenTheme para configurar o tema que será usado pela aplicação uma vez que a Splash Screen não estiver mais sendo exibida

Agora nós configuramos o tema da aplicação ou da Activity para o novo tema de Splash Screen:

Com essa configuração realizada, um passo muito importante é chamar o método de instalação da Splash Screen antes do setContentView na Activity, ou antes de outro método de operação de view (por exemplo flags de configuração). Essa chamada irá associar a Activity com o postSplashScreenTheme definido anteriormente para substituir o tema da Splash Screen com o normal do app.

Se o passo acima não for executado, a aplicação irá falha com seguinte mensagem:

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

E voilà! Agora nós temos a Splash Screen oficial do Android 12 suportada até a API 23. 🎉

Exemplo de Splash Screen

Conclusão

Ao desenvolver aplicativos diversas vezes precisamos nos preocupar com a experiência do usuário, especialmente durante a primeira execução. Essa primeira impressão pode definir se o usuário vai utilizar seu app no futuro ou não. Adicionando uma Splash Screen para um feedback visual mais refinado enquanto o seu app carrega irá dar uma impressão melhor do que mostrar uma tela vazia por alguns milissegundos.

Eu trabalhei em algumas aplicações que precisaram implementar uma Splash Screen e como não havia uma biblioteca oficial para isso, tentamos diferentes implementações que encontramos. Durante esse processo encaramos alguns problemas como a Splash sendo mostrada durante uma inicialização a quente ou a animação engasgando em alguns dispositivos. Tendo uma solução fornecida pelo Google e a possibilidade de contribuir com ideias e bugs no IssueTracker irá criar uma ferramenta muito poderosa.

Para mais informações sobre Splash Screens, por favor acesse os documentos oficiais. Eles contêm informações sobre o conceito, parâmetros e mais opções de personalização.

O que há de novo no Android 12 — Splash Screens

Muito obrigado por ler meu artigo! ❤️

--

--

Igor Escodro
Android Dev BR

Passionate Android developer | Google Developer Expert for Android