Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Learn why MongoDB was selected as a leader in the 2024 Gartner® Magic Quadrant™
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Idiomaschevron-right
Kotlinchevron-right

Construindo Splash Screen Nativamente, Android 12, Kotlin

Mohit Sharma3 min read • Published Sep 23, 2021 • Updated May 12, 2022
AndroidRealmKotlin
SNIPPET
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse exemplo de código
star-empty
star-empty
star-empty
star-empty
star-empty
social-githubVer código
Neste artigo, exploraremos e aprenderemos como construir uma tela inicial com a API SplashScreen, que foi introduzida no Android 12.

O que é uma tela inicial?

É a primeira visualização mostrada a um usuário assim que você clica no ícone do aplicativo. Se você notar uma tela branca em branco (por um breve momento) depois de tocar em seu aplicativo favorito, significa que ele não possui uma tela inicial.

Por que/quando preciso disso?

Muitas vezes, a tela inicial é vista como um diferenciador entre aplicativos normais e profissionais. Alguns casos de uso em que uma tela inicial se encaixa perfeitamente são:
  • Quando queremos baixar dados antes que os usuários comecem a usar o aplicativo.
  • Se quisermos promover a marca do aplicativo e exibir seu logotipo por um longo período de tempo, ou apenas ter uma experiência mais imersiva que leve você facilmente do momento em que você toca no ícone até o que o aplicativo tem a oferecer.
Até agora, criar uma tela inicial nunca foi simples e sempre exigiu a adição de uma certa quantidade de código padronizado ao aplicativo, como criar SplashActivity sem visualização, adicionar um cronômetro para fins de promoção de marca etc. Com a API SplashScreen, tudo isso está definido para Go.

Mostre-me o código

Etapa 1: Criando um tema

Mesmo para a nova APISplashScreen, precisamos criar um tema, mas na pastavalue-v31, pois alguns parâmetros são suportados somente no Android 12. Portanto, crie uma pasta denominada value-v31 na pastares e adicione theme.xml a ela.
E antes disso, vamos dividir nossa tela inicial em pedaços para simplificar.
Espaço reservado da tela de apresentação
  • O ponto 1 representa o ícone da tela.
  • O ponto 2 representa a cor de fundo do ícone da tela inicial.
  • O ponto 3 representa a cor de fundo da tela inicial.
  • O ponto 4 representa o espaço para o logotipo da marca, se necessário.
Agora, vamos atribuir alguns valores às chaves correspondentes que descrevem as diferentes partes da tela inicial.
1<style name="SplashActivity" parent="Theme.AppCompat.NoActionBar">
2
3 <!-- Point 3-->
4 <item name="android:windowSplashScreenBackground">#FFFFFF</item>
5
6 <!-- Point 2-->
7 <item name="android:windowSplashScreenIconBackgroundColor">#000000</item>
8
9 <!-- Point 1-->
10 <item name="android:windowSplashScreenAnimatedIcon">@drawable/ic_realm_logo_250</item>
11
12 <!-- Point 4-->
13 <item name="android:windowSplashScreenBrandingImage">@drawable/relam_horizontal</item>
14</style>

Caso queira usar um ícone de aplicativo (ou não tenha um ícone separado) como `WindowsPlashScreenAnimatedIcon`, ignore esse parâmetro e, por padrão, ele usará o ícone do seu aplicativo.
Dicas e truques: se o ícone de empate estiver sendo cortado na tela inicial, crie um ícone de aplicativo a partir da imagem e substitua o conteúdo de windowSplashScreenAnimatedIcon pelo ic_launcher_foreground.xml.
Para windowSplashScreenBrandingImage, não consegui encontrar nenhuma alternativa. Compartilhe nos comentários se você encontrar um.

Etapa 2: adicionar o tema à atividade

Abra o arquivo AndroidManifest e adicione um tema à atividade.
1<activity
2 android:theme="@style/SplashActivity">
3</activity>
Na minha opinião, não há necessidade de uma nova activity classe para a tela inicial, que tradicionalmente era necessária. E agora estamos prontos para a nova tela inicial doAndroid .12
desenho
Adicionar animação à tela inicial também é muito fácil. Basta atualizar o drawable do ícone com AnimationDrawable e AnimatedVectorDrawable drawable e parâmetros personalizados para a duração da animação.
1<item name="android:windowSplashScreenAnimationDuration">1000</item>
Anteriormente, mencionei que a nova API ajuda no caso de uso inicial de download de dados do aplicativo, então vamos ver isso em ação.
Na atividade da tela inicial, podemos registrar para addOnPreDrawListener ouvinte, o que ajudará a adiar o primeiro empate na tela, até que os dados estejam prontos.
1 private val viewModel: MainViewModel by viewModels()
2
3 override fun onCreate(savedInstanceState: Bundle?) {
4 super.onCreate(savedInstanceState)
5 addInitialDataListener()
6 loadAppView()
7 }
8
9 private fun addInitialDataListener() {
10 val content: View = findViewById(android.R.id.content)
11 // This would be called until true is not returned from the condition
12 content.viewTreeObserver.addOnPreDrawListener {
13 return@addOnPreDrawListener viewModel.isAppReady.value ?: false
14 }
15 }
16
17 private fun loadAppView() {
18 binding = ActivityMainBinding.inflate(layoutInflater)
19 setContentView(binding.root)

Dicas e truques: ao desenvolver a tela inicial, você pode retornar false para addOnPreDrawListener, para que a próxima tela não seja renderizada e você possa validar a tela inicial facilmente.

Resumo

Eu realmente gostaria da nova API doSplashScreen, que é muito limpa e fácil de usar, eliminando completamente a atividade do SplashScreen. No entanto, há algumas coisas que não apreciei.
  1. A tela inicial de fundo suporta apenas uma cor. Estamos aguardando suporte para backgrounds de chamarizes vetoriais.
  2. Não há especificações de design disponíveis para imagens de ícones e marcas, o que o torna mais um jogo de sucesso e teste. Ainda não conseguir corrigir a imagem de bandas, no meu exemplo.
  3. Por último, mas não menos importante, o recurso lateral da interface do usuário do SplashScreen (theme.xml) só é compatível com o Android 12 e superior, portanto, não podemos nos desfazer do código antigo por enquanto.
Você também pode conferir o exemplo completo em funcionamento no meu repositório do GitHub. Observação: apenas executar o código no dispositivo mostrará você em branco. Para ver o exemplo, feche a bandeja recente do aplicativo e clique novamente no ícone do aplicativo.
Link do repositório do GitHub
Espero que isso tenha sido informativo e tenha gostado de lê-lo.

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse exemplo de código
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Além do básico: aprimorando a API Kotlin Ktor com pesquisa vetorial


Sep 18, 2024 | 9 min read
Tutorial

Começando com Kotlin e MongoDB no lado do servidor


Oct 08, 2024 | 6 min read
Tutorial

Descubra seu Airbnb ideal: implementando um Spring Boot e Atlas Search com o driver Kotlin Sync


Oct 02, 2024 | 8 min read
Artigo

Java x Kotlin: sintaxe diferente, mesmas possibilidades


Nov 25, 2024 | 5 min read
Tecnologias Utilizadas
Linguagens
Tecnologias
Produtos
Sumário
  • O que é uma tela inicial?