Fan made XKCD comic reader using the official JSON interface.
- 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.
- Kotlin
- Android Architecture Components
- AndroidX
- Paging Library
- RxAndroid
- Card Stack View
- Dagger 2
- Retrofit 2
- Fresco
- Kotpref
- Toasty
- Lovely Dialog
- Timber
- ktlint
I do not own or affiliate myself with XKCD, but I love the comic. Hope you enjoy the app as much as I do.
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.