Giter VIP home page Giter VIP logo

desafiomuxi's Introduction

DesafioMuxi

Geração do APK

Foi utilizado o Android Studio 2.3.3 para este projeto. O projeto foi testado durante a fase de desenvolvimento com a versão 6.0 do android, num dispositivo físico (Moto G3)

Para construir o APK será necessário instalar no Android Studio algumas ferramentas da SDK. Para isto faça o seguinte:

  1. Abra o projeto no Android Studio
  2. Selecione Tools -> Android -> SDK Manager
  3. Clique na aba SDK Tools
  4. Marque as opções LLDB, CMake e NDK
  5. Clique em Apply e depois em OK
  6. Quando a instalação completar, clique em Finish e depois em OK

Execução dos testes

Os testes estão em java.com.bruno.desafiomuxi (androidTest). Para executar um teste basta clicar no mesmo com o botão direito e então clicar em Run 'nome do teste...'

Sobre o projeto

Neste projeto foi utilizado o framework Volley da Google para a a requisição web do arquivo .json. O mesmo framework teria sido utilizado para a requisição dos arquivos de imagem, porém a própria Google colocou o módulo de requisição de imagens como obsoleto e não recomenda utilizá-lo, portanto para requisição de imagens foi utilizada a biblioteca Picasso. Estas duas bibliotecas têm a vantagem de serem simples e já oferecem cache para as suas requisições.

Para a serialização do arquivo .json foi utilizada a biblioteca Gson.

Para os testes foi utilizada a biblioteca JUnit, pois tem alta integração com o SDK do android, e para auxiliar na instrumentação de alguns testes foi utilizada a biblioteca Espresso

O projeto foi organizado em 4 pacotes

  • Core: É o pacote que contém as Activities
  • Currency: É o pacote que contém a classe responsável pelos câmbios entres moedas
  • WebRequest: É o pacote que contém o framework de comunicação com a API
  • Currency-converter: É a bibliteca com código nativo para conversão assíncrona entre valores monetários

As Activities do projeto têm suporte à mudança de orientação das telas sem perder estado. Na MainAcitivity como tem layout único, bastou adicionar no manifest android:configChanges="orientation|screenSize". A FruitDetailsActivity tem layout diferente para cada orientação, e portanto a persistência de estado foi implementada no próprio código.

No módulo da biblioteca nativa para conversão assíncrona de moeda, foi utilizado um recurso disponível no C++ a partir da padronização C++11 para criar threads, pois como é um recurso embutido na linguagem, reduz problemas com dependências de bibliotecas externas.

desafiomuxi's People

Contributors

brwnow avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.