Image for post
Image for post

A biblioteca Jetpack Navigation traz diversos benefícios na implementação do fluxo navegacional de aplicações Android. Mas para ser bem honesto, mesmo sabendo de todos os seus benefícios, eu nunca fui muito fã dela e sempre evitei utilizá-la. Nem sei explicar o porquê, mas uma coisa que me incomoda é não ter nos fragments a animação de transição padrão de activities existente na plataforma. É preciso utilizar animações do tipo slide, fade, etc… Até pensei que usar a animação padrão do S.O. seria algo simples que o Google poderia fazer, mas conversando uma vez com o Ian Lake, ele me falou…


Image for post
Image for post
Source: https://collegeinfogeek.com/file-folder-organization/

No artigo anterior eu fiz uma breve introdução à navegação de telas utilizando a biblioteca Navigation para Compose. Nesse post, demonstrarei como implementar uma das formas de navegação mais comuns atualmente em aplicações mobile: a abas inferiores (ou bottom tabs).

O intuito desse exemplo é simular o comportamento navegacional da aplicação do YouTube (especificamente a versão 15.50.35), que possui 4 abas iniciais: Início, Explorar, Inscrições e Biblioteca. Ao selecionar a aba "Biblioteca" e escolher uma opção ("Histórico", por exemplo), o conteúdo é exibido na própria aba. …


Image for post
Image for post
Source: https://libreshot.com/cs/wooden-rudder/

O Jetpack Compose veio com o intuito de ser o novo toolkit de UI para Android, substituindo os componentes que herdam da classe View por funções @Composable. Obviamente isso envolve toda uma mudança de paradigma de desenvolvimento de UI, que com o Compose, passa a ser declarativa, ao invés da abordagem imperativa utilizada atualmente. Mas um dos pontos que sempre chamou a atenção quando eu falava sobre o Compose era a navegação entre telas. Para isso, o Google está trabalhando na biblioteca de Navigation para Compose e neste post veremos como dar os primeiros com ela.

Adicionando a dependência

Nesse exemplo, estou utilizando…


Image for post
Image for post
Source: https://tinyurl.com/yysugozr

O Google recentemente adicionou uma nova biblioteca ao arsenal do Jetpack: a DataStore. Esse componente tem o intuito de facilitar e modernizar ainda mais o armazenamento de configurações da aplicação. Essa biblioteca cria uma abstração sobre as SharedPreferences e Protocol Buffers (ou simplesmente ProtoBuf) com suporte a Coroutines e Flow.

Configuração básica

Nesse post vou demonstrar as duas formas de utiliza o DataStore: com SharedPreferences e com ProtoBuf. Em ambos, utilizaremos Coroutines, por isso é preciso adicionar a seguinte dependência no build.gradle.

implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"

Essa dependência permitirá lançar as coroutines a partir da Activity. Se desejar fazer o mesmo a partir de…


Image for post
Image for post
Fonte: jmonline

Sempre fui um adepto do uso do LiveData para realizar a comunicação entre a UI (Activity/Fragment) e a apresentação (ViewModel). Mas durante uma thread de discussão no slack do Android Dev BR, o Lucas Cavalcante sugeriu utilizar a classe StateFlow da API de Coroutines que foi lançada na versão 1.3.6 da API de Coroutines. Nesse post, será apresentado um exemplo simples do seu uso e como escrever alguns testes para um view model que use essa API.

Representando operações

No contexto de MVVM no Android, é muito comum representar operações assíncronas em três possíveis estados: carregando, sucesso e erro. …


Image for post
Image for post
Source: https://bit.ly/3eFLecs

Tenho feito algumas PoC (Proof of concept) no projeto que estou trabalhando atualmente. Coincidentemente essas PoCs possuíam certos fluxos de telas que continham estados que deveriam ser compartilhados entre telas de um mesmo fluxo. Por exemplo, um fluxo de sign in, o usuário digitava o email em uma tela, na outra o nome e sobrenome, em seguida aceitava os termos de uso, etc. …


Image for post
Image for post
(Andypott/iStock) Fonte: https://bit.ly/3bBGcwy

Estou devendo esse post a mim mesmo há um bom tempo. Desde quando escrevi a primeira edição do meu livro, um dos leitores sugeriu que eu colocasse uma seção demonstrando como publicar bibliotecas de modo que elas fossem acessíveis a outros desenvolvedores.

Acabei esquecendo desse assunto. Mas recentemente trabalhei em um projeto em que cada grande feature era separada em um repositório à parte, e para isso é usado o JFrog. Mas como já usamos o GitHub, surgiu então possibilidade de utilizar o GitHub Packages. …


Image for post
Image for post
Source: https://material.io/design/motion/

Recentemente precisei implementar uma animação utilizando uma RecyclerView e percebi que poderia ser relativamente fácil de implementar utilizando o MotionLayout.

SPOILER! O resultado final será esse! :)


O ViewPager é basicamente um gerenciador de layout que permite à aplicação exibir páginas de dados (normalmente) semelhantes, onde o usuário pode alternar entre essas páginas utilizando o gesto de swipe (deslizando horizontalmente) para esquerda e para direita.

Recentemente o Google apresentou o ViewPager2, que é parte integrante do Jetpack e que possui algumas melhorias em relação ao seu antecessor:

  • Permite o scroll vertical, bastando definir a propriedade android:orientation para "vertical";
  • Dá suporte a idiomas RTL (Right-to-Left) por meio da propriedade android:layoutDirection="rtl";
  • É possível modificar a listagem de fragments utilizado no adapter, similar ao que acontece na RecyclerView por meio…


No meu antigo blog, todo ano eu fazia a retrospectiva do meu ano. Percebi que por alguma razão, eu não escrevi esse post em 2018. Mas não poderia deixar 2019 passar em branco, pois esse ano pra mim, foi mais um ano abençoado por Deus.

Fevereiro

Participei do Android Fest em Aracajú. E como é bom ter um evento desses no Nordeste e um orgulho enorme ser convidado para palestrar.
Valeu GDG Aracajú!

Image for post
Image for post

Nelson Glauber

Android Developer. Google Developer Expert for Android/Kotlin. Author of “Dominando o Android”.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store