1---2name: android-ui-ux-design3description: Use when an Android phone, tablet, foldable, or Compose screen needs native Material navigation, components, states, accessibility, and adaptive behaviour. Do not use for iOS conventions or cross-platform unify/diverge decisions; route those to iOS design or parity.4---56# Android UI/UX Design7Acknowledgement: Shared by Peter Bamuhigire, techguypeter.com, +256 784 464178.89<!-- dual-compat-start -->10## Use When1112- Designing or reviewing Android app screens, Compose components, navigation, dashboards, forms, onboarding, or settings.13- The user asks for native Android UI polish, premium UX, mobile ergonomics, Material 3, or app pleasantness.14- An Android app is connected to a business backend and must feel trustworthy enough for real customers.1516## Do Not Use When1718- The task is not Android or Android-adjacent.19- The work is backend-only and has no user-facing Android surface.2021## Required Inputs2223| Input | Source | Evidence |24|---|---|---|25| User task, navigation, roles, and screen states | Product and application contracts | Critical flow, routes, loading/error/offline/permission states |26| Supported Android versions and form factors | Engineering support policy | API range, phone/tablet/foldable/window classes, input modes |27| Brand tokens and native implementation constraints | Design system and Compose repository | Approved type/colour/motion and existing components |2829- Target screens, user task, device classes, brand/product context, backend constraints, and any existing screenshots or Compose components.30- Confirm whether the deliverable is design guidance, implementation, review, QA, or documentation.3132## Workflow33341. Load your platform's Android development/implementation skill for code and build standards.352. State the typography and visual-quality intent against the Chwezi anti-slop charter — see `doctrine/design-doctrine.md` and `doctrine/references/ai-slop-banned-fonts.md` — before styling.363. Define the primary mobile task, top-level destinations, and device classes.374. Choose Material 3 components and adaptive navigation before custom patterns.385. Model every Compose screen state: loading, content, empty, error, offline, permission denied, and syncing.396. Apply the Android mobile quality gate before implementation or review sign-off.4041## Decision Rules4243| Condition | Choice | Wrong-choice failure |44|---|---|---|45| Top-level destinations are few and peer-level | Material navigation bar/rail by window class | Custom tabs or drawers break native predictability |46| Layout crosses compact/medium/expanded widths | Adaptive pane/navigation transformation | Enlarged phone canvas wastes space and harms productivity |47| System back or predictive back applies | Integrate native back stack and preview | Custom gesture conflicts strand users or lose state |4849## Capability Contract5051- Must inspect product and Compose contracts and render/test representative Android configurations; review is read-only unless implementation is requested.52- May edit/test in-scope UI. Do not change platform support, permissions, production data, or release builds without authority.5354## Degraded Mode5556- If API range, form factors, navigation, or state contract is missing, stop final specification and request it.57- Without emulator/device rendering, provide a window-class/state matrix marked unverified. Recover a failed state or configuration by preserving task context, using native fallback, and retesting keyboard/touch/accessibility/back paths.5859## Android UX Standards6061- Target **Material 3 Expressive** (the current 2026 standard) — not stock M3. State which expressive levers you use (shape scale up to 28dp `extraLarge`, spring motion, emphasis, containment, expressive components like button groups / FAB menu / loading indicators). See `references/material-3-expressive.md`.62- Bind colour to **M3 role tokens** (`MaterialTheme.colorScheme.*`), never raw hex. Ship a designed **light + dark** `ColorScheme`. **Dynamic colour (Material You)** is opt-in for branded products — default to a **fixed brand seed** (HCT-generated tonal ramps); state the choice. Certify contrast WCAG 2.2 AA regardless.63- Support **predictive back gestures** via `PredictiveBackHandler` / navigation predictive-back — interruptible, progress-tracked, reversible on cancel. Prefer M3 components that ship predictive-back dismissal. See `references/android-motion.md`.64- **Roboto is the Android system face** and is allowed **only as the platform default/fallback** — it is **banned as a deliberate Chwezi brand or display primary**. Branded display/headline type must come from an **approved font category** (`doctrine/references/font-groups-and-usage.md`), pass the banned-list check, and be paired (never monotype).65- Use Material 3, Compose, semantic tokens, and adaptive layout by default.66- Use bottom navigation for 3-5 primary destinations on compact screens; use navigation rail or pane layouts on larger screens.67- Minimum touch target is 48 dp.68- Respect edge-to-edge layout, system bars, back navigation, and platform permission flows.69- Use `WindowSizeClass`, not hardcoded tablet checks.70- Business reports over 25 rows should use table-first or dense list patterns, not endless cards.71- Every primary workflow must work offline or fail with a clear recovery path when the domain requires field use.72- Support TalkBack, font scaling, dark mode, contrast, and reduced motion.7374## Quality Standards7576- Android screens feel native to Material 3 and the app's domain.77- Navigation, state handling, touch targets, typography, and accessibility are verified on compact and expanded layouts where applicable.78- Premium UX gate categories must score at least 8/10 before sign-off.7980## Anti-Patterns8182- Squeezing web layouts into a phone UI.83- Building card walls for dense reports.84- Ignoring TalkBack, font scaling, offline states, or Android back behavior.85- Hard-coding one phone width. Correction: design across compact, medium, and expanded window classes.86- Fighting predictive back with a custom edge gesture. Correction: integrate the native back stack and preview.8788## Outputs8990| Output | Consumer | Evidence and acceptance |91|---|---|---|92| Android UI/navigation/adaptive specification | Product and Compose engineering | Components, states, window classes, back, accessibility, and tokens are explicit |93| Android quality gate | QA and accessibility | Representative APIs/form factors/input modes pass critical flows and recovery states |9495- Android UI brief, Compose component guidance, navigation model, state matrix, accessibility notes, or review findings.9697## Examples9899- `examples/android-screen-spec.md` — a worked Android screen spec (Maduuka "Today" dashboard): visual-quality intent stated against the doctrine, Material 3 Expressive component/colour/type decisions, predictive-back motion, full state matrix, and the accessibility sign-off gate.100101## References102103- `references/material-3-expressive.md` — the current Android visual standard: Material 3 Expressive levers, the M3 role-based colour system, dynamic colour (Material You) vs fixed brand seed, type-scale roles, predictive back, and adaptive layout.104- `references/android-motion.md` — Android motion: spring/motion-scheme tokens, predictive-back gesture motion, signature moments (container transform, shape morph, shared element), and the reduced-motion path.105- `doctrine/design-doctrine.md` — the always-load anti-slop charter governing typography, colour, and visual identity.106- `doctrine/references/ai-slop-banned-fonts.md` and `doctrine/references/type-scale-and-spacing.md` for type choices, scale, and spacing.107 - Mobile-platform font caveat: Android's **Roboto** is the OS/Material system face — it is allowed only **as the platform system default**, never as a deliberate Chwezi brand/display primary (it is banned for that). Any custom branded type must come from the approved font categories (`doctrine/references/font-groups-and-usage.md`) and avoid the banned list.108- `references/jetpack-compose-ui.md` for Compose-specific Material 3, layout, animation, navigation, and component patterns.109<!-- dual-compat-end -->