Revolut Maxim Kostenko

How Revolut Customises Android App UI with Themes

Original post Customising Android App UI with Themes

Article Summary

Maxim Kostenko from Revolut reveals how they built one of the most customizable Android apps on the market. Their approach goes far beyond basic dark mode—and it required reverse-engineering Android's own framework.

Most Android apps stop at light/dark themes, but Revolut offers users complete control: system-wide dynamic colors, custom color palettes, and real-time theme switching. This deep dive explains the technical implementation behind each personalization layer, including the challenges of runtime theme changes without official Android APIs.

Key Takeaways

Critical Insight

Revolut achieved maximum Android UI personalization by combining dynamic colors, custom theme overlays, and a custom controller that forces activity recreation—techniques that work without migrating to Material3.

Continue reading

What This Article Covers

Problem

Maxim Kostenko's team at Revolut needed to switch themes at runtime across all active activities. Android's private AppCompatDelegate API only handles light and dark mode, so they needed a different approach.

Solution

They created ColorThemesController using ActivityLifecycleCallbacks to keep track of activity references in a static set. The controller loops through each activity and calls applyDayNight to force them to recreate, which is how Android handles dynamic color and custom theme overlays internally.

Impact

Users can now switch between default, dynamic, and custom Orange themes instantly at runtime. Material Design naming conventions for color tokens like colorPrimary and colorSecondary stay consistent across all screens.

The article includes a complete working demo app on GitHub that implements all three theming approaches, plus the exact code for the ColorThemesController that makes runtime switching possible.

This page summarizes “Customising Android App UI with Themes” by Revolut, published Jul 19, 2023. All credit for the original work goes to the authors.

Read the original on medium.com (opens in new tab)

AI tools for Android

Browse all AI tools →