Code Monkey home page Code Monkey logo

com.example's Introduction

Яндекс.Мобилизация

##Тестовое задание для летней школы мобильной разработки.

###Задание Напишите приложение для платформы Android на языке Java. Чтобы вам было легче, мы подготовили примерный вид экранов тестового приложения и набор данных.

Минимальная функциональность:

  • На первом экране нужно показать список имен исполнителей популярной музыки.

  • На следующем экране — подробную информацию о выбранном исполнителе.

  • Исходные данные приложение получает по сети в формате JSON. JSON доступен по ссылке: json link.

###Реализация

Дополнительные реализованные функции:

  • Поддержка разных экранов и ориентаций

    Я реализовал несколько layout файлов, которые выводят данные для разных экранов по-разному, плюс, на больших экранах данные выводятся не списком, а таблицей.

  • Кэширование данных и изображений

    Приложение использует OkHttpClient как стандартный Http-клиент, в котором я реализовал кэширование полученных данных. Его, в свою очередь, используют Retrofit и Picasso, что позволяет кэшировать и данные и изображения.

  • Анимация

    Для анимаций я использовал стандартные Transitions Animation. Работают только на SDK>=21

  • Тесты

    Так же написано несколько unit-тестов, проверяющих работы презентеров, модели и адаптера. И ui-тесты, проверяющие в целом работу интерфейса.

  • Комментарии

    Код покрыт комментариями практически полностью. В очевидных моментах я их опустил.

Я реализовал данное приложение с помощью архитектуры MVP + Dagger 2. Загрузкой данных сервера занимается связка Retrofit + RxJava, а загрузка изображений осуществляется с помощью Picasso. Состоянием экранов занимается Presenter, данные с экрана сохраняются в onSaveInstanse, а потом восстанавливаются в onCreate. Я хотел реализовать сохранение состояния экрана с помощью этого метода, но для такого небольшого приложения он мне показался слишком громоздким. Так же рассмативал вариант использования кастомных View, вместо фрагментов и пр, но решил остановиться на варианте с двумя активити, хотя, в таком подходе есть минус - без повторения кода, не получится реализовать экран для альбомной ориентации на планшете. В итоге, отказался от этой затеи, ввиду окончания сроков подачи заявки.

###Использованные библиотеки

####Для работы приложения: ButterKnife

RxAndroid

RxJava

Retrofit 2

Picasso

Dagger 2

####Для unit-тестов:

MockWebServer

Mockito

Robolectric

####Для ui-тестов:

Espresso

Cucumber

###Ссылка на APK файл

com.example's People

Contributors

makavelka avatar

Watchers

James Cloos 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.