1 of 22

[1]

Venilton FalvoJr

Education Tech Lead na DIO�Doutorando no ICMC-USP

@falvojr

Java e Kotlin Juntos!? Construindo Apps

Android

2 of 22

[2]

Início da Graduação em Engenharia de Computação

Graduação

Estágio como

Dev Java/.NET

1º Emprego

Enfim Mestre

Título e carreira como

Dev Mobile

2007

Doutorado e desafios como Education Tech Lead na DIO

Doutorado e DIO

2008

2015

Hoje

Sobre Mim

credential.net/gy7a7rsn

já expirou, mas foi top 😅

3 of 22

[3]

Desenvolva os eventos, integrações e interações de usuário em um App Android. Para isso, vamos explorar conceitos essenciais, como: APIs, Orientação a Objetos e Padrões de Projetos; tudo na prática usando Java e Kotlin!

Nesse sentido, bibliotecas consolidadas como Glide e Retrofit serão utilizadas com o objetivo de aumentar ainda mais nossa produtividade e qualidade de código.

Objetivo Geral

4 of 22

[4]

Nosso App já está versionado no GitHub: disponível aqui. �Por isso, os seguintes conteúdos são pré-requisitos:

  1. Desenvolvimento Mobile Nativo Para AndroidBranch: release/desenvolvimento-mobile-nativo-para-android
  2. Componentes, Layouts e UI/UX Em Apps AndroidBranch: release/componentes-layouts-ui-ux-em-apps-android

Premissas/Revisão

5 of 22

[5]

Percurso

Parte 1

Criando uma "API" e Modelando seu Domínio

Parte 2

Conhecendo as Bibliotecas Retrofit e Glide

Parte 3

Parcelable e Simulação de Partidas 🎲

6 of 22

[6]

// Java e Kotlin Juntos!? Construindo Apps Android

Parte 1

Criando uma "API" e Modelando seu Domínio

7 of 22

[7]

Domínio/Problema

Listagem/Simulação de Partidas

Detalhes da Partida

8 of 22

[8]

Com base nos protótipos, conseguimos ter uma boa ideia do nosso domínio de aplicação. Nesse contexto, vamos abstrair as entidades relevantes para o App, por exemplo:

  • Toda Partida é realizada em um Local;
  • Uma Partida possui dois Times (mandante e visitante);
  • Os Times têm um nível de força (estrelas)…

Domínio/Problema

9 of 22

[9]

Uma Application Programming Interface (API), basicamente, se propõe a expor recursos de um domínio de aplicação. Seu principal objetivo é definir uma interface para integrações concisas e eficientes.

Nesse sentido, para que não tenhamos que construir uma API do zero, vamos prover nossos recursos (partidas) via GET por meio do recurso GitHub Pages.

“API” no GitHub Pages 🤨

10 of 22

[10]

[

{

"descricao": "Eliminatórias Copa 2022",

"local": {

"nome": "Maracanã",

"imagem": "TODO"

},

"mandante": {

"nome": "Brasil",

"estrelas": 5,

"imagem": "https://www.bandeirasnacionais.com/data/flags/normal/br.png"

},

"visitante": {

"nome": "Argentina",

"estrelas": 5,

"imagem": "https://www.bandeirasnacionais.com/data/flags/normal/ar.png"

}

}

]

“API” no GitHub Pages 🤯

11 of 22

[11]

“Falar é fácil.

Mostre-me o código!”�

Linus Torvalds

Hands On! Criando a “API” e Classes de Domínio

12 of 22

[12]

Percurso

Parte 1

Criando uma "API" e Modelando seu Domínio

Parte 2

Conhecendo as Bibliotecas Retrofit e Glide

Parte 3

Parcelable e Simulação de Partidas 🎲

13 of 22

[13]

// Java e Kotlin Juntos!? Construindo Apps Android

Parte 2

Conhecendo as Bibliotecas Retrofit e Glide

14 of 22

[14]

Cliente HTTP para Android e Java, o qual abstrai incrivelmente a complexidade no consumo de APIs. Além disso, possui uma série de conversores JSON, que facilitam a (de)serialização dos dados:

// Retrofit (HTTP Client): https://square.github.io/retrofit

implementation 'com.squareup.retrofit2:retrofit:2.9.0'

implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

�Nota: Ao obter as partidas da API, vamos listá-las dinamicamente com o RecyclerView.

Retrofit

15 of 22

[15]

Gerenciador de mídia rápido e eficiente, abstraindo o processo de carregamento de imagens em Android, gerenciando desde a decodificação e transformação até o controle de cache das mesmas:

// Glide (Image Loading): https://github.com/bumptech/glide

implementation 'com.github.bumptech.glide:glide:4.11.0'

annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'

Glide

16 of 22

[16]

“Falar é fácil.

Mostre-me o código!”�

Linus Torvalds

Hands On! Explorando as Libs Retrofit e Glide

17 of 22

[17]

Percurso

Parte 1

Criando uma "API" e Modelando seu Domínio

Parte 2

Conhecendo as Bibliotecas Retrofit e Glide

Parte 3

Parcelable e Simulação de Partidas 🎲

18 of 22

[18]

// Java e Kotlin Juntos!? Construindo Apps Android

Parte 3

Parcelable e

Simulação de Partidas 🎲

19 of 22

[19]

Parcelable é a estratégia de (de)serialização padrão em Apps Android, ou seja, é a implementação utilizada para troca de mensagens entre as telas de um App. Nesse contexto, o Kotlin Parcelize é uma alternativa muito simples e efetiva:

plugins {

id 'kotlin-parcelize'

}

Parcelable

20 of 22

[20]

“Falar é fácil.

Mostre-me o código!”�

Linus Torvalds

Hands On! Finalizando Nosso App

21 of 22

[21]

Links Úteis

22 of 22

[22]

> Fórum/Artigos

> Comunidade Online (Discord)

Dúvidas?