PopularMovies

screenshot of PopularMovies

:movie_camera: Movie discovery app showcasing Android best practices with Google's recommended architecture: MVVM + Repository + Offline support + Android Architecture Components + Paging library & Retrofit2.

Overview

This is an analysis of a movie app called "Screen✨" that allows users to discover popular and highly rated movies. The app includes features such as viewing and playing trailers on YouTube, displaying movie reviews, marking movies as favorites, sharing movie trailers, and providing offline support. The app also utilizes advanced features like MVVM architecture, pagination with endless scrolling, network status handling, and Material Design.

Features

  • Discover the most popular and the most rated movies
  • User can view and play trailers on YouTube
  • Shows a list of reviews for each movie
  • Users can mark a movie as favorite in the details view by tapping a heart icon
  • Users can share movie trailers with their network
  • Offline support: app makes use of NetworkBoundResource, which uses database as the single source of truth
  • Advanced uses of RoomMVVM with Android Architecture Components(Room, LiveData, ViewModel)
  • Pagination and endless scrolling using Android paging library
  • Handle network status and network failures
  • ConstraintLayout(guidelines, barriers... etc)
  • Material design

Summary

The "Screen✨" movie app is a feature-rich application that allows users to discover popular and highly rated movies. It provides various functionalities like viewing trailers, reading reviews, marking favorites, and sharing trailers with others. The app also supports offline usage and incorporates advanced features like MVVM architecture, pagination, network status handling, and Material Design. To install the app, cloning the repository and adding the API Key are required steps.

material-design
Material Design

Material Design is a design system developed by Google that provides a set of guidelines, components, and tools for creating visually appealing and functional user interfaces. Material Design is designed to be flexible and customizable, making it a great choice for a wide range of applications and use cases.