Skip to content

Project from Udacity Android Nanodegree working with The Movie Database (TMDb)

Notifications You must be signed in to change notification settings

ben-lotze/popular-movies-stage2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Uncle Ben's Popular Movies Database (Stage 2)

To reviewers and potential users

Please add your TMDb API key in gradle.properties: TmdbApiKey="your_api_key"

Screenshots

Navigation Drawer & movie grid:

Movie details with trailer previews and search:

Favorites with sorting and swipe-to-delete functionality:

Settings

Features

User Interface

  • Choose between most popular and highest rated movies
  • Movies are displayed in the main layout via a grid of their corresponding movie poster thumbnails.
  • UI contains a screen for displaying the details for a selected movie.
    • contains title, release date, movie poster, vote average, and plot synopsis.
    • section for displaying trailer videos and user reviews.
    • user can tap a button to mark it as a Favorite.

Network / Threading / Background Threads

  • UI gets populated after data was loaded with Loader in background task
  • Queries the /movie/popular or /movie/top_rated API for the sort criteria specified in the settings menu.
  • Requests related videos for a selected movie via the /movie/{id}/videos endpoint.
  • Requests user reviews for a selected movie via the /movie/{id}/reviews endpoint.

Data persistence

  • Titles and IDs of the user’s favorite movies are stored in a native SQLite database and are exposed via a ContentProvider.
  • Saving instance state on rotation (implemented with ViewModel from android.arch.lifecycle)

Additional features (not required)

  • Navigation Drawer
  • Endless scrolling for movies from web source (automatic loading of more pages on background thread)
  • Storing additional information about favorites to allow sorting by title, release date or timestamp when favorite has been added.
    • Re-selecting the same sorting reverses the order.
  • Swipe to remove favorite
  • Selecting a favorite from Favorites downloads the movie details in a background thread from TMDb's /movie endpoint by id (no movie data that could change is stored in SQLite database for a favorite)
  • Loading additional data in multiple Loader background threads for movie details (each content getting populated in UI as soon as possible):
    • Youtube trailer thumbnails (parsed from downloaded JSON from oEmbed-endpoint at "youtube.com/oembed")
    • additional movie information (imdb id for link to IMDb page, runtime, budget, genres).
  • Settings
    • Language for movie data
    • JSON parsing engine (Google Gson or "bare hands")
  • Search movie on other web services (Rottom Tomatoes, Amazon, Google, IMDb, Youtube)

About

Project from Udacity Android Nanodegree working with The Movie Database (TMDb)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published