
When "sp" is not enough for font scaling
Most Android devs are aware of using sp for text sizes and line heights. There are lint checks which will catch that for you. But sometimes, just using sp doesn’t make your app scale the text in a ...

Most Android devs are aware of using sp for text sizes and line heights. There are lint checks which will catch that for you. But sometimes, just using sp doesn’t make your app scale the text in a ...

Until Lifecycle 2.11, ViewModelStore scoping was tied to navigation destinations, activities, or fragments. There was no clean way to scope a ViewModel to an arbitrary part of your UI. The Lifecycl...

The other day, I found myself in a bit of a loop. I was explaining my preference for avoiding mock tests to Android Studio Agent Mode, then repeating the same thing to the Gemini CLI, and finally w...

While working on a Jetpack Compose project, I noticed my modal bottom sheet wasn’t appearing in Android Studio previews. I could preview the sheet’s contents by extracting them into a separate comp...

Jetpack Compose has transformed Android UI development by providing a straightforward approach to building user interfaces. One of its core principles is minimising unnecessary updates, and one of ...

The other day, while sitting in the back of a taxi, I noticed the speedometer and had the idea to build one using Jetpack Compose (because, why not? 😛). In this post, I will explain the process of ...
At Twitter, we regularly use Paparazzi for our screenshot unit tests. We prefer this library over others because it runs on the JVM, which results in fast turnaround times. Recently, I was working...
AppCompat 1.2 release came with a couple of new lint rules which suggest using either AppCompatResources or ContextCompat or ResourcesCompat depending on the API you were originally consuming. But ...
As Android codebases continue to become increasingly modular, some of these modules might need to be initialized at app startup in order to wire everything up. This usually results in the Applicati...
This week I had the chance to work with the awesome folks at Async Android and uploaded my first youtube video. In this video, we’ll see how we can find the theme attributes that control the appea...