/Samsung-Bootcamp-2021

MVVM architecture implementation example

Primary LanguageKotlin

Список популярных фильмов

Android CI

English | Русский

О приложении

Приложение разработано в рамках обучаючающего интенсива Samsung Innovation Campus Bootcamp: Kotlin for Android. Мастер-класс "Использование паттерна MVVM при разработке приложений. Классы ViewModel и LiveData".

Функционал представляет простейший список популярных фильмов и информацию о каждом фильме. Доступ к информации о фильмах осуществлён с помощью сервиса The Movie DB с использованием соответствующего API.

Презентационные и другие дополнительные материалы находятся здесь.

Шаблон проекта находится в ветке template или его можно скачать здесь.

Средства разработки

Приложение написано на Kotlin и использует систему сборки Gradle.

Чтобы собрать приложение используйте команду gradlew build или используйте "Import Project" в Android Studio. Требуется стабильная версия Android Studio 4.2.1 или новее, загрузить которую можно здесь.

Архитектура

Архитектура построена вокруг Android Architecture Components.

Были использованы рекомендации, описанные в Руководстве по архитектуре приложений при принятии решения об архитектуре приложения. Бизнес-логика приложения была вынесена из Activity и Fragment'ов в ViewModel.

Подписка на обновление данных было реализовано с использованием LiveData, а для хранения и управления кэшем фильмов была использована Room.

Был использован Koin для внедрения ViewModel'ей во Fragment'ы.

The Movie Database API

Для демонстрации работы с клиент-серверной архитектурой используется данное API. Данные и изображения лицензированы в соответствии с CC BY-NC 4.0. С полными правилами использования API можно ознакомиться здесь.

Для работоспособности необходимо выполнить следующие шаги:

  1. Получить ключ по следующей инструкции (EN).
  2. Добавить ключ в файл Constants.kt в константу API_KEY

В приложении используются следующие запросы:

  • GET /movie/{movie_id} - получение информации о фильме.
  • GET /movie/{movie_id}/credits - получение информации об актёрах и съёмочной группе фильма.
  • GET /movie/popular - получение списка популярных фильмов постранично.