Git Product home page Git Product logo

popularmovies's Introduction

Popular Movies App

Project Overview

Most of us can relate to kicking back on the couch and enjoying a movie with friends and family. In this project, I have built an app to allow users to discover the most popular movies playing.

Project Details:

  1. My app will present the user with a grid arrangement of movie posters upon launch.

  2. Allows user to change sort order via a setting menu. When sort criteria (most popular, highest rated, and favorites) is changed the main view gets updated accordingly.

  3. When the "favorites" setting option is selected, the main view displays the entire favorites collection.

  4. Allows the user to tap on a movie poster and transition to a details screen with additional information such as original title, movie poster, image thumbnail, A plot synopsis (called overview in the api), user rating (called vote_average in the api) and release date

  5. App will fetch trailers and reviews by making a network request and displays data in RecyclerView.

  6. When a trailer is selected, app launchs the trailer in YouTube.

  7. In the movies detail screen, a user can tap on "Mark As Favorite" button to mark that particular movie as favorite.

  8. The titles, IDs, movie poster, synopsis, user rating, and release date of the user’s favorite movies are stored using Room and are updated whenever the user favorites or unfavorites a movie. Display favorite movies even when offline.

  9. Sharing functionality has been implemented to allow the user to share the trailer’s YouTube URL.

What did I Learn?

Through this project:

  1. Creating a gridview with custom adaptor

  2. Parcelables and onSaveInstanceState()

  3. Using Picasso library

  4. Using Lint to check errors and warning in the project

  5. Practice consuming data from RESTful API and JSON parsing to a model object

  6. Making sure my app does not crash when there is no network connection!

  7. Design activity layouts

  8. Android architecture components(Room, LiveData, ViewModel):

    a. Database is implemented using Room to store Favorite movies.

    b. Database is not re-queried unnecessarily. LiveData is used to observe changes in the database and update the UI accordingly.

    c. Database is not re-queried unnecessarily after rotation. Cached LiveData from ViewModel is used instead.

  9. Retrofit

  10. gson

  11. RecycleView with Adapter

  12. Executors

This is how the App looks

How to run the app

Add your own API key in gradle.properties and use BuildConfig property.

popularmovies's People

Contributors

asharamanjanaiah avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.