Погодное приложение выполненное в качестве демонстрационного применения Clean Architecture.
Реализованы основные требования (mvp) и несколько дополнительных задач.
Приложение построено основываясь на подходе Uncle Bob's Clean Architecture, весь проект состоит из 3 уровней:
1. Данные
2. Бизнес логика
3. Презентация
Последний уровень, в свою очередь, построен на базе паттерна MVP. Возможно, всё это оверинжиниринг для данной задачи, однако это позволило мне лучше понять способы построения приложения с низкой связанностью за счёт чёткого разделения его компонент.
Данные получаются с использованием реактивного программирования. За счёт использования паттерна "Репозиторий" на уровне данных, источник может быть легко изменён на другой.
Для инъекции зависимостей использовался Dagger 2 (в первую очередь, на уровне представления, уровень данных по-прежнему содержит инициализацию классов из-за ограничений по времени написания приложения). Для инъекции элементов интерфейса используется ButterKnife.
Общение с REST API сервиса openweather.com происходит с использованием Retrofit 2.
Приложение содержит некоторые тесты, но покрытие тестами невелико - трейд-офф между качеством и скоростью разработки.
- Экран со списком сохраненных городов
- Экран подробной информации о погоде в городе
- Кэширование данных
- Список изначальных городов
- Возможность добавить новый город (Ограничения: на текущей момент в базе только города России)
- Автоподстоновка названия города в диалоге добавления города
- Анимация переходов между экранами
- Поддержка версий Андроида от 4.0.3
- Адаптация разметки под ландшафтный режим и, частично, под планшеты
- Удаление городов паттерном "Swipe to dismiss"
- Показ progress bar во время загрузки данных о погоде
- Обновление данных по паттерну "Swipe to refresh"
Icons designed by Freepic from FlatIcon, license Creative Commons BY 3.0.