Skip to main content

Posts

Suspending over Views — Example

·1925 words·10 mins
Apply coroutines to a real-world TV show details UI problem where InboxRecyclerView expansions require synchronizing data loading, scrolling, and animations through suspending functions instead of nested callbacks

Suspending over Views

·1926 words·10 mins
Harness Kotlin coroutines to write complex asynchronous UI operations synchronously, replacing callback-based View APIs like AnimatorListener and View.OnLayoutChangeListener with clean, readable suspending functions

Gesture Navigation: handling visual overlaps (II)

In part 1 of this series, we explored how you can make your app go ‘edge-to-edge’. Unfortunately this can result in some of your views being drawn behind the system bars, obscuring them from the user. This post explores how we can inset those views, moving them away from the system bars.

WindowInsets — Listeners to layouts

·1525 words·8 mins
If you’ve watched my ‘Becoming a Master Window Fitter’ talk, you’ll know that handling window insets can be complex.

Data Binding — Lessons Learnt

·1511 words·8 mins
Discover best practices for using Android Data Binding Library effectively, including avoiding excessive binding adapters and optimizing custom bindings for performance

CI cache key over many files

·487 words·3 mins
Learn how to generate stable CI cache keys across multiple build files using checksums in CircleCI, eliminating the need for manually tracking each dependency file separately

RxJava to Kotlin coroutines

·1613 words·8 mins
Refactor an RxJava-heavy Android app to use Kotlin coroutines while maintaining consistent threading models and single-source-of-truth schedulers