Skip to content

lucasrmagalhaes/matches-simulator-java_kotlin

Repository files navigation

Sportheca Mobile DEV Week - Simulador de Partidas 🎲

Simulador de Partidas
Projeto desenvolvido no bootcamp Sportheca da DIO.


Desenvolvimento Mobile Nativo Para Android

Objetivo Geral

Fornercer uma visão geral sobre a área de Desenvolvimento Mobile, com ênfase na criação de Apps Nativos em Android. Para isso, o ambiente de desenvolvimento é configurado com o Android Studio, possibilitando a construção de aplicativos nas linguagens Java e Kotlin.

Percurso
  • Introdução ao Desenvolvimento Mobile
  • Android Nativo: Ambiente de Desenvolvimento
  • Android Nativo: Estrutura de Projetos Android
Setup: Elementros Centrais

SDK Manager: possibilita o gerenciamento de pacotes por meio de ferramentas, APIs e outros componentes;
AVD Manager: provê múltiplas possibilidades de emulação através de dispositivos virtuais.

Android Studio

Iniciando o Projeto

EmptyActivty
Simulator
me.dio.simulator
Kotlin
API 21

Samsung Flow


Componentes, Layouts e UI UX Em Apps Android

Objetivo Geral

Apresentar alguns dos componentes disponíveis nativamente na SDK Android, explorando o Jetpack sempre que possível. Nesse sentido, os layouts de um App para simulação de partidas esportivas serão definidos. Para isso, os conceitos de prototipação e UI/UX são essencialmente compreendidos.

Percurso
  • Introdução ao Android Jetpack
  • Material Design
  • Criação dos Layouts do App
Conhecendo o Jetpack

O Android Jetpack é um conjunto de bibliotecas que ajuda desenvolvedores a seguir práticas recomendadas, reduzir códigos boilerplate e programar códigos que funcionam de maneira consistente em diferentes dispositivos e versões do Android. Assim, o desenvolvedor pode se concentrar em seu domínio de aplicação.

Usando o View Binding

Facilitar/centralizar o acesso à componentes definidos via layout XML. Com isso, as incômodas/recorrentes chamadas ao método findViewById tornam-se desnecessárias.

Usando o SwipeRefreshLayout
implementantion 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
Get from VCS

Informa a URL do Projeto - GitHub, clona direto no Android Studio.

Material Design

É um sistema de design (que engloba UI e UX) criado pelo Google para nos ajudar a criar experiências digitais de alta qualidade para multiplas plataformas.

Sistema de Cores
Color Tool

Prototipação do App

Primeira tela: Listagem/Simulação de Partidas
Segunda tela: Detalhes da Partida

Atalhos

Replace: Ctrl + R
Abrir Opções: Alt + Enter

In res/values/type.xml:

Style


Java e Kotlin

Objetivo Geral

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.

Percurso
  • Criando uma "API" e Modelando seu Domínio
  • Conhecendo as Bibliotecas Retrofit e Glide
  • Parcelable e Simulação de Partidas 🎲
Domínio/Problema

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)…
“API” no GitHub Pages 🤨

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.

[
  { 
    "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"
    }
  }
]

Matches Simulator API

Retrofit

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)

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

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)

implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
Permissão de acesso a internet
<uses-permission android:name="android.permission.INTERNET"/>

Listas dinâmicas com o RecyclerView

Parcelable

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'
}

Firebase

Objetivo Geral

Conheça algumas das possibilidades oferecidas pelo Firebase. Nesse contexto, vamos explorar alguns recursos interessantes dessa plataforma, como o Analytics, Crashlytics, entre outros. Com isso, nosso App estará muito mais preparado para uma publicação em produção (Google Play), pois eventuais crashes e insights relacionados ao seu uso poderão ser monitorados proativamente.

Introdução ao Firebase

Fornece as ferramentas para desenvolver aplicativos de alta qualidade, ampliar a base de usuários e lucrar mais. Para isso, o Firebase oferece uma poderosa suite de soluções, abstraindo a complexidade em diferentes contextos:

  • Construção
  • Implantação e Monitoramento
  • Engajamento
Configurando o Firebase

Passos para adicionar o Firebase em seu App usando o Console do Firebase (recomendado):

Crashlytics

O Firebase Crashlytics é uma ferramenta de relatório de falhas leve e em tempo real que ajuda a monitorar, priorizar e corrigir problemas de estabilidade que comprometem a qualidade do seu aplicativo.

O Crashlytics economiza tempo na solução de problemas com o agrupamento inteligente das falhas e a exibição das circunstâncias que levam a elas.

Configurando o Crashlytics

Passos para adicionar o Firebase Crashlytics: