Jetpack Compose, kit de ferramentas de UI do Google para desenvolvimento de aplicativos Android, agora está em fase alfa. É totalmente interoperável com as visualizações padrão do Android.
Quando se trata de desenvolver um aplicativo, há várias maneiras de fazer isso. Você pode escolher para quais plataformas desenvolver, quais linguagens de programação deseja usar e muito mais.
No outono de 2019, o Google introduzido uma nova estrutura para construção de UIs em Android, usando Kotlin. Até agora, ele esteve em um estado de desenvolvimento, com alterações frequentes e toneladas de recursos ausentes. Mas hoje, o Google empurrou o Jetpack Compose para o estado de lançamento alfa, o que significa que está um passo mais perto de ser usado em projetos de qualidade de produção.
O que é o Jetpack Compose?
Ao construir um aplicativo Android, geralmente há dois componentes principais com os quais você precisa lidar: o código, para coisas baseadas em lógica; e o XML, para layouts. Por padrão, o Android usa Java para código e seu próprio conjunto de tags XML para layouts.
Para muitos, Java e XML são adequados, especialmente para aplicativos mais simples. Mas ambos os sistemas têm as suas limitações e aborrecimentos. Com a introdução do Kotlin como um oficial (e recomendada) para desenvolvimento Android, o lado da codificação para criar um aplicativo Android ficou muito mais fácil. Com os recursos úteis do Kotlin, como proteção nula integrada e funções de extensão, o código parece mais limpo e mais fácil de ler.
Mas Kotlin não mudou nada nos layouts do Android. Para fazer um layout complexo, você ainda precisava criar um arquivo XML e projetá-lo ali. Isto tem algumas desvantagens notáveis, incluindo a separação inerente entre o código e o XML. Se você tiver uma string constante em seu código, por exemplo, você não pode simplesmente referenciá-la no XML; portanto, se essa string mudar no código, lembre-se de atualizá-la também no XML.
Entre no Jetpack Compose. Esta é a resposta do Google ao processo de design de layout XML cada vez mais desajeitado no Android. Em vez de projetar a UI do seu aplicativo em XML, você pode fazer isso diretamente no seu código. Embora seja possível criar layouts baseados em código, eles geralmente são menos fáceis de manter do que XML e envolvem bibliotecas facilmente quebráveis. O Compose, por outro lado, foi projetado para funcionar diretamente dentro do Kotlin: chega de XML.
O Jetpack Compose também é um afastamento bastante radical do design imperativo padrão dos layouts XML. Em vez disso, é mais semelhante ao React ou Flutter, com layouts declarativos que se atualizam quando os dados mudam, em vez de depender do desenvolvedor para implementar essa lógica.
O que é suportado
Portanto, o Jetpack Compose está em alfa agora. O que isso significa? Bem, muitas coisas.
Interoperabilidade com visualizações
Assim como o Kotlin é totalmente interoperável com Java, o Jetpack Compose é totalmente interoperável com as visualizações padrão do Android. Isso significa algumas coisas.
Por um lado, será muito mais fácil migrar para o Jetpack Compose se você quiser. Em vez de converter todas as suas visualizações e layouts personalizados em elementos que podem ser compostos, você poderá simplesmente criar novos layouts e componentes no Compose. Você tem uma biblioteca que usa visualizações "legadas", mas seu aplicativo foi projetado com o Compose? Sem problemas. Você pode adicionar a Visualização diretamente à sua função Composable. Ainda não migrou para o Compose, mas deseja usar uma biblioteca que depende de Composables? Novamente, não há problema. Basta colocar o Composable diretamente no seu layout.
Quanto ao tema, não é tão plug-and-play quanto a interoperabilidade de layout. No entanto, Google criou uma biblioteca para adaptar seus temas XML padrão em temas compatíveis com o Compose, ajudando a manter as coisas centralizadas e evitando duplicação.
Animações
Não há muito a dizer aqui, exceto que o Jetpack Compose oferece suporte a animações, assim como a estrutura View do Android. Você pode mover, redimensionar e girar conforme desejar.
Listas preguiçosas
Uma lista preguiçosa é essencialmente a versão do Compose de um RecyclerView. Ele apenas organiza os itens conforme necessário, economizando RAM e aumentando o desempenho. É claro que, sendo o Compose, as listas são significativamente mais simples de implementar.
Layout de restrição
Uma das visualizações mais poderosas do Android é o ConstraintLayout. Isso permite posicionar, dimensionar e ponderar visualizações filhas umas em relação às outras, ao mesmo tempo que facilita determinadas animações. Se você estava preocupado em perder essa funcionalidade no Compose, não deveria estar, porque ela também está aqui.
Componentes materiais da interface do usuário
Outro conjunto de visualizações poderosas é a biblioteca de componentes de materiais do Google. A maior parte do que está aqui são visualizações e layouts padrão que você pode encontrar na estrutura nativa de visualizações. Mas eles foram ajustados ou agrupados para fornecer funcionalidade extra e facilitar a criação de temas, e também chegaram ao Compose.
Teste
Uma parte importante do desenvolvimento de um aplicativo é testá-lo. Para um aplicativo simples, você pode fazer isso manualmente instalando-o e usando-o. No entanto, projetos mais complexos podem se beneficiar muito com estruturas de testes automatizados que fazem a maior parte do trabalho pesado para você. O Jetpack Compose oferece suporte a testes automatizados para que você possa tornar seu aplicativo o mais estável possível.
Recursos de acessibilidade
A acessibilidade é uma parte importante da nossa sociedade. Sem recursos de acessibilidade em nossa tecnologia, muitas pessoas simplesmente ficariam excluídas dos benefícios que nossos telefones, televisões e tudo o mais oferecem. O Jetpack Compose ainda está em alfa, então o suporte à acessibilidade não está completo, mas o Google está mantendo isso em mente durante o desenvolvimento, e o suporte rudimentar já está presente.
Estúdio Android
No entanto, nem todos os recursos do Jetpack Compose estão no próprio Jetpack Compose. Android Studio e Kotlin também possuem plug-ins e expansões para facilitar a composição.
Plug-in do compilador Kotlin
Assim como acontece com a JVM Kotlin, há um plug-in de compilador no Android Studio para converter adequadamente suas funções do Compose em código que o Android possa realmente entender e seguir.
Pré-visualizações interativas
Assim como acontece com os layouts XML padrão, o Android Studio vem com uma visualização de layout para o Jetpack Compose. Embora atualmente não seja tão conveniente quanto as visualizações XML em alguns aspectos, você precisa construir seu projeto para a visualização para atualizar e criar uma função de visualização dedicada - ela vem com uma vantagem notável: interativa prévias.
Uma visualização interativa é apenas uma visualização normal, mas interativo. Louco, eu sei. O que isso significa, porém, é que você pode digitar texto em caixas de texto, clicar em botões e, bem, interagir com seus elementos que podem ser compostos, sem precisar implantá-los.
Implantação combinável única
Se você deseja realmente implantar (ou seja, instalar) seu layout para ver como ele funciona em um dispositivo real, esse recurso pode ajudá-lo. Com layouts XML normais, para ver como um layout funciona no mundo real, você precisa criar e instalar o aplicativo inteiro. Se o layout que você deseja testar não estiver na tela principal, você pode estar tocando muito para acessá-lo.
E é aí que entra em jogo a capacidade de implantar apenas um único Composable. Em vez de ter que criar e instalar seu aplicativo e depois navegar até o layout que você está testando, basta implantar o layout. O Android Studio irá gerar e abrir uma atividade wrapper que exibe apenas o Composable que você implantou. Isso pode tornar os testes e o design muito mais rápidos e pode até ajudar a isolar problemas relacionados à interação dos elementos.
Conclusão de código
Se o seu IDE não possui autocompletar código, ele é mesmo um IDE? Não. Não, não é. Portanto, é claro, o Android Studio oferece suporte ao preenchimento completo de código para Jetpack Compose.
Embora isso não seja tudo o que o Jetpack Compose traz para a mesa, os recursos e o comportamento acima mostram o quão poderoso o Google deseja que essa estrutura seja. E, embora ainda esteja em alfa, está um passo à frente de seu status anterior de “desenvolvimento”. Se você realmente estava evitando usar o Jetpack Compose (como eu), agora pode ser a hora de tentar novamente.