Expand on the movies app built in the previous project (Popular Movies Stage I) to create a fully-featured app that will allow users to view and play trailers, read reviews, and mark their favorite movies.
- Movies are displayed via a grid of their corresponding movie poster thumbnails.
- When user taps a movie poster, the movie details are shown: title, release date, poster, vote average, and plot synopsis.
- The movie details screen also contains a section for displaying trailer videos and user reviews.
- The user can toggle the sort order of the movies by: most popular, highest rated, and now playing.
- Users can mark their favorite movies and share the movie trailer’s YouTube URLs.
- The favorite movies are stored in a local database, and can be displaedy even when offline.
- Properly handle network requests with Retrofit and OkHttp.
- Gradually load information on demand from a data source with Paging Library.
- Use Room's capabilities for data persistence.
- Manage UI-related data in a lifecycle-conscious way with LiveData and ViewModel.
- Bind observable data to UI elements with DataBinding.
- Room, a SQLite object mapping library, part of the Android Architecture Components.
- DataBinding
- Paging
- Retrofit 2, a type-safe HTTP client for Android and Java.
- OkHttp, an HTTP client for Android, Kotlin, and Java.
- Gson, a Java serialization/deserialization library to convert Java Objects into JSON and back.
- Glide, an image loading and caching library for Android.
- Timber, a logger that provides utility on top of Android's normal Log class.
- Dagger 2, a fast dependency injector for Android and Java.