Um dos principais objetivos do GDG JP é disseminar conhecimento entre os membros da comunidade de desenvolvimento, e é com esse intuito que o Club de Android propõe a criação de apps, de maneira que o que é apresentado nos meetups quinzenais venham ser aplicados fixando o conhecimento adquirido.

Como resultado dos meetups do último trimestre foi desenvolvido um app simples e fácil de implementar, o Calculation. Este app tem o objeto de controlar as finanças do usuário, como gastos em supermercado ou recebimento de algum provento.

Funcionalidades

    Login

  • Anônimo: Usuário e senhas criados no próprio app
  • Facebook: …
  • Gmail: …

    Cadastros

  • Transação: Gastos ou proventos
  • Categoria: Define de que tipo será a categoria da transação
  • Usuário: Neste caso apenas o usuário anonimo. Desta forma o usuário do app pode usá-lo em sua totalidade sem a necessidade de conexão com a internet (Ainda em desenvolvimento)
  • Backup: Algumas informações serão mantidas, como: cadastro de usuário e as transações. Dessa forma o usuário do app poderá controlar suas finanças de outro aparelho, sincronizando as informações. Este backup estará disponível em uma base no Firebase (Ainda em desenvolvimento)

    Apresentação

  • Lista com todas as transação e o seu valor total
  • Gráficos com informações das transações. (Ainda em desenvolvimento)

Arquitetura

Embora seja um app simples e com poucas funcionalidades escolhemos escreve-lo seguindo os princípios pregados pelo padrão MVP. Isto se dá por dois motivos: 1) é um padrão que vem sendo muito comentado na comunidade Android, 2) foi uma ótima oportunidade para adquirir novos conhecimento.

Mas não só por isso. Em um breve resumo podemos listar algumas vantagens/desvantagens em usa-lo.

    Vantagem

  • Proporciona uma separação entre View e regra de negócio de forma bem definida
  • Proporciona características como: testabilidade e manutenibilidade

    Desvantagens

  • Curva de aprendizagem um tanto quanto acentuada
  • Necessidade de escrever muito código, o que pode ser uma desvantagem quando se está desenvolvendo um app simples como este.

Libs

  • Dagger: Biblioteca para injeção de dependência
  • Firebase: Realtime DataBase e Login.
    • Não estamos afirmando que o Firebase é uma lib, mas inserimos aqui por comodidade.
  • Data Binding: Usado para escrever layouts declarativos, minimizando a escrita de códigos para vincular layout e lógica.
  • ConstraintLayout: Diminue a complexidade quanto a criação de layouts.
  • Sugar (ORM): Abstrai a complexidade facilitando a persistência de dados.

Screenshots

Tela Cadastro de Categorias
Cadastro de Categorias

 

Tela Cadastro de transação
Cadastro de transação.

 

Tela de login
Tela de login

 

Tela com botões para cadastro de transação
Tela com botões para cadastro de transação

 

Conclusão

Mesmo com poucas funcionalidades, este app ajudou a fixa inúmeros conceitos apresentados nos meetups do Club Android, e ajudará outros integrantes da comunidade a tirar suas dúvidas estudando o código-fonte, que será diponibilizado em breve no github do GDG JP.

Referências

[1] https://medium.com/android-dev-br/desmistificando-o-mvc-e-mvp-no-android-abe927d01df7#.l0tn1ostq

[2] https://medium.com/android-dev-br/introdu%C3%A7%C3%A3o-ao-dagger-2-56d193118a6c

[3] https://firebase.google.com/docs/

[4] https://developer.android.com/training/constraint-layout/index.html

[5] https://developer.android.com/topic/libraries/data-binding/index.html

[6] http://satyan.github.io/sugar/

Autores:
Emerson de Assis
Ionay Oliveira