![]() |
![]() |
![]() |
- Просмотр вертикального/горизонтального ячеек списка
- Сортировка ячеек фильмов по жанру
- Переход с ячейки фильмов на экран с деталями о фильме
![]() |
![]() |
- Просмотр вертикального/горизонтального деталей о фильме
- Кнопка перехода назад
- Просмотр вертикального/горизонтального информации об ошибке
- Кнопка закрывающая окно
- kotlin
- moxy
- cicerone
- dagger2
- retrofit
- croutines
- gson
- material design
- xml
- app
- App
- Constants - содержащий api url и base url images
- di
- modules
- AppComponent
- domain
- entities - бизнес сущности и вспомогательные сущности для listAdapter
- model - api retrofit, кастомный CallAdapterFactory и repositories
- presentation
- adapter - реализованный listAdapter общий для все
- mvp - реализованный через moxy
- navigation - навигация реализованная через cicerone
- ui - fragments и составляющие адаптеры к фрагментам
- single activity
- долго открывается экран с детальной информации о фильме.
- Класс MovieDetailsFragment метод loadFilm, класс GenreGroupViewHolder метод onBind методы можно разбить еще на несколько методов - повысит читаемость кода.
- Ручное обращение к методам модуля вручную, не использовал компоненты для этого
- В пресентере лучше заводить общий scope на время жизни Presenter, чтобы при уничтожении Presenter'а отменять все запущенные операции.
- В пресенторах использовал строки которые нужно вынести в строковые ресурсы
- снятие с выбранного жанра для возвращения к сортировках по всем фильмам
- тёмная тема
- анимация перехода на новый экран
- возможность прогрузить данные в случае изначального включения приложения без интернета
- toolbar по material design
- single select нажатие по жанрам
- при повороте экрана пропадает выделение с выбранного перед этим жанра(но выбранные фильмы в отсортированном списке по этому жанру остаются)
- доступно открытие нескольких подряд окон с фильмами которые пользователь подряд все просматривает
- выполненно
- приложение обрабатывает отсутствие интернета
- есть обработка api ответа и сообщения в случае получения неправильного ответа с сервера