All Projects → thiagokimo → TMDb

thiagokimo / TMDb

Licence: other
A simple Android client for The Movie DB in Material Design

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to TMDb

Api
PHP 7.3+ API Wrapper for The Movie Database
Stars: ✭ 317 (+387.69%)
Mutual labels:  movie, tmdb
auto-movie-tagger
A Python script that auto tags and adds poster to mkv or mp4 movie files.
Stars: ✭ 49 (-24.62%)
Mutual labels:  movie, tmdb
Movie
🎥 Movie web implemented by React/Redux and TMDB API
Stars: ✭ 31 (-52.31%)
Mutual labels:  movie, tmdb
MovieCards
React App that uses TMDb API to display movie data. Try it out! ->
Stars: ✭ 38 (-41.54%)
Mutual labels:  movie, tmdb
movie-trailer
🎥 Fetch movie trailers: "Crash" ➔ http://path/to/trailer
Stars: ✭ 19 (-70.77%)
Mutual labels:  movie, tmdb
BESTV
Android TV App powered by TMDb. It is a easy way to find the best TV content, the top movies, series... all of that in your TV.
Stars: ✭ 49 (-24.62%)
Mutual labels:  movie, tmdb
inventum
Android client for TMDb
Stars: ✭ 22 (-66.15%)
Mutual labels:  movie, tmdb
tmdb-api
This Kotlin Multiplatform library is for accessing the TMDB API to get movie and TV show content. Using for Android, iOS, and JS projects.
Stars: ✭ 31 (-52.31%)
Mutual labels:  movie, tmdb
Flox
Self Hosted Movie, Series and Anime Watch List
Stars: ✭ 901 (+1286.15%)
Mutual labels:  movie, tmdb
Fluttergames
Flutter app for purchasing and renting games.
Stars: ✭ 182 (+180%)
Mutual labels:  movie
Qnapi
Qt-based, multi-engine, multi-platform subtitle downloader
Stars: ✭ 226 (+247.69%)
Mutual labels:  movie
Toshocat
Anime and Manga list app for desktop.
Stars: ✭ 174 (+167.69%)
Mutual labels:  movie
Gmdb
GMDB is the ultra-simple, cross-platform Movie Library with Features (Search, Take Note, Watch Later, Like, Import, Learn, Instantly Torrent Magnet Watch)
Stars: ✭ 189 (+190.77%)
Mutual labels:  movie
Douban
React-native 仿豆瓣电影 app
Stars: ✭ 236 (+263.08%)
Mutual labels:  movie
Vue Movie
基于vue2.0构建的在线电影网【film】,webpack+vue+vuex+keepAlive+muse-ui+cordova 全家桶,打包成APP
Stars: ✭ 175 (+169.23%)
Mutual labels:  movie
torrent-indexer
Yet another node.js torrent scraper made especially for movie, series, anime and music (scrape from 1337x, eztv, limetorrents, rarbg, skytorrents, thepiratebay, torrentproject, yts and zooqle)
Stars: ✭ 50 (-23.08%)
Mutual labels:  movie
Bandersnatch
💻 Interactive Black Mirror: Bandersnatch Paths Website 🎥
Stars: ✭ 169 (+160%)
Mutual labels:  movie
Miniprogram
猫眼电影/Taro/微信小程序/React
Stars: ✭ 163 (+150.77%)
Mutual labels:  movie
MyDiary
A real-world mobile app implementation inspired by the movie "Your Name". 🌠
Stars: ✭ 23 (-64.62%)
Mutual labels:  movie
esp32 ST7735 Movie
Movie Player on esp32 and ST7735
Stars: ✭ 38 (-41.54%)
Mutual labels:  movie

TMDb

A simple Android client for The Movie DB in Material Design

Get it on Google Play

TL;DR

This project is an Android app which displays data from The Movie Database API.

Screenshots

Movie Search Movie Detail Movie Images Fullscreen Image

The Mission

In this assignment I had to provide 3 main user features:

  • Search for movies
  • See details of a movie
  • Open images of a movie

The following section explains how did I organized the architecture of my code.

Architecture

The application is organized using a clean architecture approach consisting of 2 main layers:

  • Presentation (app)
  • Domain

Presentation Layer

The view logic resides here. The Model-View-Presenter pattern was used to keep all the presentation logic into presenters and away from the fragments and activities (which were considered only views). The presenters are composed of the use-case that perform their tasks on background, outside the UI Thread, and returning the results through a callback into the views.

Third-party dependencies:

compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.android.support:recyclerview-v7:21.0.0'
compile 'com.android.support:cardview-v7:21.0.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.melnykov:floatingactionbutton:1.3.0'
compile 'com.ogaclejapan.smarttablayout:library:1.1.3@aar'
compile 'com.ogaclejapan.smarttablayout:utils-v4:1.1.3@aar'
compile 'com.mcxiaoke.photoview:library:1.2.3'
compile 'com.pnikosis:materialish-progress:1.5'
compile('com.crashlytics.sdk.android:crashlytics:2.2.4@aar') { transitive = true; }

The AppCompat was used in order to make the app UI's look'n feel as much Material Design as possible, with the hold of CardView, Materialish Progress and Floating Action Button. The RecyclerView was used to handle all collections displayed in the app. All images loaded from the web were handled with Picasso, which allow us deal with asynchronous image downloading. Interfaces with tabs were build with SmartTabLayout. Fullscreen images are displayed with the PhotoView library, which allow users to zoom in/out and move around the image. The Crashlytics library is used to keep tracks of all non predictable crashes.

Domain Layer

This layer have all business rules. All use-cases implementations, server-side communication and entity objects were implemented here. This layer doesn't know the existence of the presentation layer.

Third-party dependencies:

compile 'com.path:android-priority-jobqueue:1.1.2'
compile 'com.squareup.retrofit:retrofit:1.9.0'

The Retrofit library was used to do http calls. The Priority Job Queue was used to wrap all use cases in a thread-safe environment.

Notes

  • In order to solve the request search limit I called the search movie use case 1 second after the user typed in the search input.
  • Since there were different image sizes, I displayed lower-sized images in my recylerviews and bigger or original sizes of images in the detailed screens.
  • To pass data from the domain layer to the presentation layer I used a mapper to filter out all unnecessary information from the server-side that I wasn't going to use in the views.
  • I used this technique to cache images loaded from Picasso.

Extra things I could have done

  • An Image transition from the movie search screen to the movie detail screen.
  • I didn't write tests. If I did I would test my presenters in the presentation layer and my use cases in the domain layer.

References

Author

Thiago Rocha

+553184349266

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].