Android: UI / UX
Adaptive Compose layouts, themes, and interaction patterns that hold up in long real sessions
Native Android · UI / UX
Interfaces built for long sessions
on real phones and tablets
Screenshots are from Stitch Counter on Google Play. Knitters and crocheters tap counters for a long time, rotate the phone, switch themes, and manage projects in bulk. The patterns below are about holding up under that use, not demo-day screenshots.
Stitch Counter is a personal project by our lead developer; it is licensed for portfolio use. It was not built for a client.
What we build for clients
Problem
A primary control that breaks in landscape is unusable mid-session
Rapid, repeated input is the job. Numbers get large. Devices rotate. Layouts that look fine in a portrait mock often overflow or shrink into unreadable type when the session is real.
Adaptive counter system
How it's built
A real-time counter interaction system with dynamic text scaling so large counts stay readable in portrait and landscape on phones and tablets. Counter state is preserved across orientation changes so progress is not lost on rotate.
Why this shape
- Input stays responsive during long counting sessions
- Layout adapts as content changes so counts do not overflow or break the screen
- Portrait and landscape share one adaptive approach instead of two frozen designs
Results
The primary control remains usable when numbers grow and when the device rotates, which is when real sessions happen.
Lesson
Design the primary control for the worst realistic content size and orientation first. Everything else is easier after that. We use the same test when we harden your busiest screens.
Problem
Themes feel cheap when dark mode and icons disagree with the rest of the app
Personalization is part of the product for this audience. Multiple color styles only work if every screen, dark mode, and launcher icon stay on the same system.
Dynamic theme system
How it's built
A theming system built by overriding Material Design 3: six shipped visual styles, dark mode for each, and custom launcher icons that match the active theme. Theme preference is stored in DataStore so it survives restarts.
Why this shape
- Centralized styling keeps screens consistent as features grow
- Dark mode is first-class for every theme, not a one-off
- Per-theme icons make the choice feel complete on the home screen, not only inside the app
Results
Users can switch themes without layout breakage, and the app reads as one designed product instead of a pile of screens with mismatched colors.
Lesson
Theme work pays off when it is a system: tokens, dark variants, and icons together. Isolated palette swaps rarely survive the next feature. We bring that system mindset to brand and appearance work in your app.
Problem
Bulk edits and deletes get clumsy when every action needs a new screen
Managing a project library means multi-select, swipe, confirmations, quick edits, and dense detail. Without shared patterns, each flow invents its own gestures and users slow down.
Shared interaction patterns across the app
How it's built
A set of interaction patterns used throughout the app and adapted per feature: swipe and multi-select for bulk delete, bottom sheets for quick edits without leaving the screen, expandable sections for dense settings, structured detail screens for titles, notes, images, and progress, plus modal confirmations for destructive choices.
Why this shape
- Common tasks stay on or near the current screen instead of deep navigation chains
- Confirmations protect against accidental deletes without hiding the action
- Visual feedback for selection and state changes keeps bulk operations understandable
Results
Library management stays fast as the catalog grows. Users learn one gesture vocabulary and reuse it across screens.
Lesson
Interaction systems compound. Investing once in swipe, multi-select, sheets, and confirmations is cheaper than teaching a new pattern per feature. That is the same approach we use when we improve flows in your existing app.
How we work
Design-led iteration on real devices: layouts, themes, and interactions that hold up under everyday use.
Review
You share who uses the flow, what feels clunky today, and any references or brand rules we should match.
Plan
We align on navigation, responsive breakpoints, theme behavior, and key states: loading, empty, success, and destructive actions.
Build
Compose UI with adaptive spacing, motion where it helps, and patterns like sheets, swipes, and confirmations tuned to your content.
Deliver
Cohesive screens that look right in light and dark, feel fast, and give clear feedback, ready to ship to real users.
Need Android UI / UX work like this?
A fit when you need UI-focused improvements or new flows in an existing app, especially with Kotlin, Jetpack Compose, responsive layouts, theming, or clearer interaction patterns.
Tell us which screens feel stuck — we will reply with scope questions and timelines before we start.