OrbitDial is a full-screen rotary app launcher — eight icons riding a disc that's tilted away from the viewer, so spinning it around its centre reads as an actual 3D wheel instead of a flat carousel. Inspired by work from Kyriakos Georgiopoulos.
Why tilt matters more than rotation
A flat carousel that just slides icons left and right never stops looking like a list. Tilting the disc plane away from the viewer and projecting icon positions onto that tilted ellipse is what makes the same eight icons read as objects riding the rim of a wheel — the icons at the "far" edge of the disc scale down and compress toward the center line, exactly the way a real tilted disc would look from this angle.
Drag gestures rotate the disc with spring-based momentum, so flicking it behaves like spinning a physical dial rather than snapping between fixed positions. Everything here — the disc projection, the icon placement, the drag physics — is plain Compose Canvas and Kotlin, no 3D library.
Full source, including the drag-to-spring rotation handling, is on the gist linked above.