Проект предназначен для ознакомления с творчеством знаменитого голандского художника Винсента ван Гога. Архитектурно модуль построен в соответствии с MVVM паттерном, и использует для навигации библиотеку androidx.navigation.
С точки зрения Android, оно реализовано в виде Single-Activity-Application, содержащей BottomNavigationView FragmentContainerView (NavHostFragment). Послендний из них используется для подмены на один из двух фрагментов:
-
Фрагмент с информацией о художнике, с возможностью формирования push notification о предстоящей выставке (BroadcastReceiver + AlarmManager). Анимация данного фрагмента реализована с помощью CollapsingToolbarLayout и NestedScrollView, что позволяет уменьшать и увеличивать изображение/имя художника при скроллинге. Анимация переходов между фрагментами реализована с помощью anim, который оборачивается в NavOptions. Добавив нотификацию, мы попадаем в фрагмент который содержит RecyclerView с событиями.
-
Фрагмент со списком картин художника с крутящимися лайками(RotateAnimation) и дрожащей кнопкой корзины, использующей anim (AnimationUtils.loadAnimation) в рамках каждого ViewHolder. Для подгрузки изображений используется Picaso, а для опережащей загрузки Paging Library - PagingList(использующий DataSource который запрашивает работы из сети) с возможностью сохранять полученные работы в Room с использованием корутин. В целом асинхронность в приложении представлена RxJava2.