Chris Banes

This is my personal blog and any views expressed here are mine, and mine alone.

CI, caching

CI cache key over many files

How to generate a key to use for caching build dependencies and more on CI
Chris Banes
Kotlin Coroutines, RxJava

RxJava to Kotlin coroutines

This post is a summary of how I refactored an app which uses RxJava pretty heavily, to one which uses Kotlin coroutines too. Specifically I’ll talk about switching out Single/Maybe/Completable sources to coroutines.
Chris Banes
WindowInsets, Animations

Windows Insets + Fragment Transitions

A look at how to get fragment transitions working when using WindowInsets
Chris Banes
Animations, Fragments

Fragment Transitions

Using transitions with fragments has a few gotchas, this blog post looks at how to get it all working.
Chris Banes

Room + Date / Time

If you’ve started using Room (and you should if you haven’t), there’s a high probability that you will need to store + retrieve some kind of date/time.
Chris Banes
Nested Scrolling, AppBarLayout, Animations

Carry on Scrolling

A look at how we added fling support to nested scrolling in Android, to AppBarLayout work in all scenarios.
Chris Banes
Website, Jekyll, Firebase

Jekyll + Firebase Hosting

A look at how this site is built using Jekyll, and automatically deployed to Firebase Hosting.
Chris Banes

Why isn’t my animation running?

Let me tell you a story about something I spent a fair amount of time debugging last year. I had totally forgot about it until the other day when someone mentioned something they were seeing with Snackbar, and it turned out to be the same thing.
Chris Banes
Dark Theme, AppCompat

DayNight — Adding a dark theme to your app

This post has been updated multiple time since first publishing. The content is correct as-of March 13th 2019. The DayNight functionality in AppCompat allows your app to easily switch between a dark ⚫ and light ⚪ theme. This has many benefits for your users, especially if you have a content-heavy app (such as a Reddit client). How do I use it? You need to change your theme to extend from one of the DayNight variants, and then call one method to enable the feature. Here’s an example theme decla
Chris Banes