Sample app using 500px api
Java
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
app
demo
gradle/wrapper
.gitignore
README.md
build.gradle adding sample May 23, 2016
gradle.properties
gradlew
gradlew.bat
settings.gradle

README.md

Summary

  • Sample app using Retrofit + Dagger + RxJava using 500px api.
  • Supporting api>=18

Requirements

  • Add your consumer key by creating a file secret.properties under app directory. File should be like API_KEY=YOUR_API_KEY
  • You can get an API consumer key here: 500px Consumer Key
  • You’ll first need to log in with your 500px account. Please create a 500px account if you don’t yet have one.

Architecture Pattern

Coding Style

Key Concept

There are 2 screens in the app

Each Screen has

  • A contract defining the view and the presenter
  • An Activity which is responsible for the creation of fragments and presenters
  • A Fragment which implements the view interface.
  • A presenter which implements the presenter interface

In general, the business logic lives in the presenter and relies on the view to do the Android UI work. The view contains almost no logic: it converts the presenter's commands to UI actions and listens to user actions, which are passed to the presenter.

Special Thanks To

  • GoogleSample - For providing detailed understanding of different architecture.
  • 500px - Using 500px api to display photos.
  • Retrofit2 - For sending api get request.
  • Picasso - For image loading and Caching
  • OkHttp - Used by picasso for fast downloading of images
  • AppCompat - Used for providing backward compatibility support
  • RxAndroid/ RxJava - Used to caching remote calls which uses Observer pattern to subscribe and un-subscribe ui thread when not in view.
  • RxProguard Rules - ProGuard rules for RxJava shipped as AAR!
  • ButterKnife - Removing boiler plate code by using @Bind annotation.
  • Dagger 2 - For using dependency injection in android without reflection.
  • Android Support Libraries - For using support widgets like recycler view.
  • Espresso - Used for UI Testing
  • Mockito - Used for mocking classes in unit testing
  • JUnit - Testing Library