Skip to content

MikeFot/android--xkcd-reader

Repository files navigation

XKCD Comic Reader (unofficial)

Fan made XKCD comic reader using the official JSON interface.

Architecture

  • The app is entirely written in Kotlin.
  • Dagger 2 Android is utilised for Dependency Injection.
  • There is a single Activity which swaps Fragments inside a Non-Swipeable ViewPager (custom view) using a Bottom Navigation View.
  • Remote Data: Network calls are handled by Retrofit 2.
  • Local Data: There is a local Room Database for persisting fetched comics and recording user favourites. There is also an extra table created for handling Paging.
  • Data loading and writing is abstracted behind a ComicsRepo.
  • Business logic is handled by reusable Interactors who also handle threading via injected schedulers.
  • Each Fragment has its own Android ViewModel that emits actions via LiveData.
  • View Binding is in turn handled by each Fragment's dedicated View Binder.
  • Swiping cards is handled by the latest version of Card Stack View which uses a recycler adapter.
  • Favourites are toggled using a custom FavouriteImageView.

Media

swipe

favourites

search

image preview

Dependencies

Disclaimer

I do not own or affiliate myself with XKCD, but I love the comic. Hope you enjoy the app as much as I do.

Releases

The app will not go into Play Store as this is not endorsed and unofficial. Sill, if you want a copy of the reader, head over to the releases page and download an APK.