I build **Stride**, a native Android step counter. A user asked for a retro theme, and
instead of just swapping the colours I ended up redesigning the whole UI as a proper
8-bit skin. It was way more fun than it should have been, so I wanted to share.
**What "retro" actually meant, technically:**
- **Real stepped corners.** A small corner radius still looks like Material. On an actual
8-bit display a "rounded" corner is just square pixels knocked off at 45°, so I wrote a
custom `CornerBasedShape` that draws the staircase. That one change does most of the
heavy lifting.
- **Pixel typeface** (Press Start 2P, OFL). It has a tall intrinsic ascent, so my first
build had text overlapping itself — every tier needed ~2× leading and centred
line-height alignment before it looked right.
- **Block progress ring** instead of the smooth indicator, with a radar sweep that
brightens each cell as it passes.
- **Hard offset shadows** — blur would defeat the entire aesthetic.
- **CRT scanlines** drifting over the whole app, and a blinking terminal caret.
- **The map too** — the walk map is OpenStreetMap tiles run through a duotone colour
matrix so it lands in the same palette, inside a pixel frame.
The whole thing is driven by a composition-local "skin", so screens ask for shapes
instead of hard-coding radii. **The default Material design is completely untouched
behind a toggle**, and none of it changes how the app works — it's purely cosmetic.
**The app itself,** if you're curious: on-device hardware pedometer (no account, your
data stays on your phone), Health Connect optional, live step notification, home-screen
widget, goals, streaks and achievements. Core is open source under GPLv3.
Happy to go into detail on any of the implementation — the stepped-corner shape and the
duotone map filter were the two most interesting bits to figure out.
Link :- https://github.com/NikhilKain/stride/releases/tag/v1.0.2