1---2name: android-mobile-frontend-design3description: Design Android mobile frontend experiences from scratch, improve existing screens, and fix UI issues with brand-forward, localization-safe, overflow-safe guidance across Compose and Views.4---5# Android Mobile Frontend Design67## When To Use8- Use this skill when the request is about: android mobile frontend design, design android screen from scratch, redesign android mobile screen.9- Primary outcome: Design Android mobile frontend experiences from scratch, improve existing screens, and fix UI issues with brand-forward, localization-safe, overflow-safe guidance across Compose and Views.10- Use this skill when the work is design-intent first: hierarchy, rhythm, screen structure, navigation chrome, spacing, surface model, visual direction, overflow safety, or localization-safe mobile UX.11- Reach for this skill before implementation details when the user wants a screen to feel premium, modern, polished, clearer, calmer, more branded, or more mobile-native.12- Read `references/patterns.md` when you need the create/improve/fix routing matrix, Compose-vs-Views handoff rules, or the localization and overflow stress checklist.13- Read `references/scenarios.md` when you want docs-only walkthroughs for new-screen design briefs, OrbitTasks redesign reviews, or overflow/localization repair passes.14- Handoff skills when the scope expands:15- `android-compose-foundations`16- `android-material3-design-system`17- `android-compose-accessibility`18- `android-viewsystem-foundations`19- `android-testing-ui`2021## Operating Modes22### `create`23- Use when a screen does not exist yet or exists only as a rough idea.24- Start from user goal, primary task, state model, and mobile hierarchy instead of jumping to colors or components.25- Decide the screen's dominant pattern early: list-detail, feed, form, dashboard, onboarding flow, confirmation flow, or settings surface.2627### `improve`28- Use when a screen works functionally but feels generic, cluttered, dated, confusing, or visually weak.29- Audit what to preserve first: task order, user mental model, brand constraints, and the pieces already carrying useful meaning.30- Redesign hierarchy, spacing, affordances, and action emphasis without changing product intent unless the request explicitly asks for it.3132### `fix`33- Use when a screen already exists and has concrete UX defects: clipped text, awkward spacing, unreachable actions, poor hierarchy, broken insets, bad RTL, weak loading states, or cramped controls.34- Repair the smallest set of layout and interaction decisions that restores clarity before proposing a full visual overhaul.35- Treat "cut" as clipped, cropped, truncated, obscured, or otherwise visually broken UI and handle it as a first-class failure mode.3637## Workflow381. Choose the operating mode first: `create`, `improve`, or `fix`.392. Define the screen job in mobile terms: who is using it, what they must complete fast, what they must understand at a glance, and what deserves confidence or calm.403. Decide the information hierarchy before styling: primary action, dominant content block, secondary actions, supporting metadata, and recovery states.414. Choose the right mobile shell for the job: top app bar, bottom bar, rail, sheet, FAB, segmented control, tabs, or list-detail split based on device size and task frequency.425. Build a surface model that is intentionally brand-forward but still Android-usable: density, corner language, depth, color posture, and typography emphasis should express the product without fighting touch ergonomics.436. Stress the layout against real mobile constraints: long strings, translated labels, multiline text, RTL, narrow widths, large widths, keyboard, system bars, cutouts, split-screen, tablets, and foldables.447. Validate action reachability, touch targets, hierarchy, contrast, and scanning speed before handing off to implementation skills.458. Route the implementation correctly:46- `android-compose-foundations` when the design is settled and the work is Compose structure/layout.47- `android-material3-design-system` when the work is tokenization, theming, or custom design-system translation.48- `android-compose-accessibility` when semantics, focus, or assistive behavior needs dedicated work.49- `android-viewsystem-foundations` when the owning surface is XML/ViewBinding/Fragment UI.50- `android-testing-ui` when the design is ready for screenshot or interaction verification.5152## Amazing UI Quality Bar53### What "amazing" means in a mobile Android UI54- The first screenful answers three questions instantly: what this screen is for, what matters most, and what the user should do next.55- The screen feels authored rather than assembled from default components: spacing, type scale, color emphasis, depth, and motion all reinforce the same product personality.56- The primary action is obvious without becoming noisy.57- The UI remains attractive under stress: translation, font scaling, keyboard, gesture navigation, split-screen, and large-screen resizing do not collapse the experience.58- The product feels premium because it is confident and friction-aware, not because it piles on gradients, glass, or decorative chrome.5960### Practical craft rules61- Use a consistent spacing rhythm grounded in Android's 4dp grid, but let the screen breathe where clarity benefits from more separation.62- Build typography with distinct jobs: overline/kicker, headline, section label, body, metadata, and action text should not blur together.63- Let one element dominate each viewport region. If headline, filter row, cards, and CTA all compete equally, the design has no conductor.64- Prefer fewer, stronger surfaces over many weak cards and dividers.65- Use color to clarify state, action, and trust. Do not use accent color as wallpaper.66- Motion should reveal structure, preserve context, or confirm state change. Remove it if it is only decorative.6768### Screen-family best practices69- Lists and feeds:70 make item hierarchy scannable in under a second, keep row density intentional, and make secondary metadata quieter than the decision-driving content.71- Forms:72 keep labels persistent, make validation and requiredness obvious, and ensure keyboard progression never hides the active task.73- Dashboards:74 do not import desktop density by default; group content into a clear narrative of summary, decision, and drill-down.75- Onboarding and empty states:76 one idea per screen, one primary move, and copy that explains value before detail.77- Sheets and dialogs:78 use them for focused decisions or contextual flows, not as a place to hide full screens with broken navigation.7980## Design Direction81### Start with mobile intent, not decoration82- Decide what the user must do one-handed, what can live below the fold, and what must stay visible through motion, keyboard, and narrow widths.83- Mobile UI should feel authored, not squeezed-down desktop UI. Small screens punish weak hierarchy faster than any design review does.84- Brand-forward does not mean louder by default. It means the interface feels deliberate, memorable, and specific to the product instead of generic Material scaffolding.8586### Pick a clear visual posture87- Use one dominant posture per screen family:88- `confident utility`: dense, clear, fast, highly legible, restrained color.89- `calm guidance`: more air, stronger sectional rhythm, gentle emphasis, friendly onboarding and empty states.90- `premium trust`: layered surfaces, disciplined motion, richer typography, higher confidence for money, health, or irreversible actions.91- `expressive brand`: stronger color, memorable shapes, and signature layout moves, but still touch-safe and readable.92- Keep the posture consistent across related screens. A premium dashboard and a flat, generic detail screen usually means the system is not yet coherent.9394### Create mode specifics95- Start with:96- screen goal97- user state and urgency98- primary action placement99- content order100- state planning for loading, empty, error, offline, and success101- Choose the shell around the primary action:102- bottom action areas for flow completion103- floating action only when it is the dominant repeatable action104- sheets for contextual, interruptible actions105- tabs or segmented controls only when switching content families is central to the screen106- Prefer one strong primary move per screen. If everything shouts, nothing leads.107108### Improve mode specifics109- Audit:110- what the eye lands on first111- where the primary action currently sits112- whether spacing communicates grouping113- whether surfaces feel flat, noisy, or over-divided114- whether the screen asks the user to read too much before acting115- whether the screen feels generic because every component has equal visual weight116- whether motion, color, and type are helping orientation or just adding noise117- Preserve:118- product logic119- user muscle memory where it still helps120- good existing component contracts121- any design token investment already paying off122- Improve by reordering emphasis, merging weak sections, clarifying labels, strengthening whitespace, and making calls to action unmissable without increasing clutter.123124### Fix mode specifics125- Diagnose:126- clipped or truncated text127- buttons, chips, tabs, and snackbars that cannot survive longer text128- actions hidden behind the keyboard or system bars129- broken sheet heights or unsafe fixed heights130- weak contrast or tiny touch targets131- awkward spacing that makes dense screens harder to scan132- empty, loading, or error states that do not explain what to do next133- visual imbalance where everything is the same size, weight, and urgency134- "cheap" feeling UI caused by weak rhythm, inconsistent corners, inconsistent elevation, or accidental color usage135- Fix layout stress first, then aesthetics. A screen that looks premium in English but breaks in German or Arabic is not finished.136137## Localization And Overflow Best Practices138### Localization-aware design139- Expect long-string expansion as the default, not an edge case.140- Design labels, chips, and CTA text to survive translation without depending on the English string length.141- Think multiline first for buttons, filters, banners, onboarding copy, and empty states when the content must remain explicit.142- Treat pseudolocalization as a design tool, not just a QA tool. If the hierarchy collapses under pseudolocalized strings, the design is too brittle.143- Support per-app languages and locale shifts without assuming one global density or one formatting style.144- Respect locale-specific numerals, date/time formats, currency width, and reading rhythm when designing narrow cells and summary rows.145- Ensure visual emphasis does not depend on a specific word order that disappears in translation.146147### RTL-aware design148- Mirror directional layout safely instead of hardcoding left/right assumptions.149- Keep iconography, chevrons, progress cues, and text alignment honest in RTL contexts.150- Do not rely on asymmetric padding or a left-anchored visual trick that breaks when mirrored.151- When mixed-direction content appears inside the same screen, design for readability rather than assuming the entire surface behaves as one direction.152153### Overflow and cutoff safety154- Do not use fixed-height text containers unless the design has been proven safe under long strings, font scaling, and multiline content.155- No clipped CTA labels, chips, tabs, sheets, snackbars, toolbar titles, or bottom-sheet handles because of decorative layout decisions.156- Prefer safe wrapping and adaptive reflow before silent truncation.157- Use ellipsis only when the hidden content is genuinely noncritical or there is a clear recovery path such as expansion, detail view, or tooltip-equivalent help.158- Ensure keyboards, IME insets, cutouts, taskbars, and system bars never obscure primary actions or active inputs.159- On large screens and foldables, avoid placing crucial content in hinge, fold, or awkward dead-zone regions.160- Do not put tap or drag-critical UI directly under gesture-inset conflict zones in edge-to-edge layouts.161162## Adaptive And Edge-To-Edge Best Practices163- Design edge-to-edge by default: scrolling and background content may live behind system bars, but critical tappable UI must honor insets and gesture conflicts.164- For target SDK 35+ and newer devices, assume edge-to-edge is part of the normal Android experience rather than an optional flourish.165- Use window size classes and adaptive structure so layouts can recompose into rails, multi-column sections, or list-detail arrangements without becoming stretched phone UIs.166- Large screens should at least meet "optimized" Android large-screen quality expectations: no letterboxing mindset, no dead wasted space, and no phone-only navigation assumptions.167- Foldables and multi-window states are layout tests, not post-launch surprises.168169## Compose And View-System Guidance170### Compose171- Compose is best when the redesign needs flexible hierarchy, adaptive structure, expressive spacing, and reusable UI primitives.172- Use Compose when the screen benefits from compositional sections, easier adaptive branching, and modern motion/visual polish.173- Hand off to `android-compose-foundations` once the design intent is settled and the remaining work is component architecture and layout execution.174175### Views and XML176- View-system screens still deserve strong design work; do not assume only Compose screens can feel premium.177- Respect Fragment, RecyclerView, ViewBinding, and ConstraintLayout realities when planning improvements.178- Prefer responsive/adaptive View-system layouts over static, dimension-locked XML that only looks correct on one device profile.179- Hand off to `android-viewsystem-foundations` once the screen direction is clear and the remaining work is XML/Fragment execution.180181## Guardrails182- Mobile-first always wins over desktop habits. Do not import dashboard-web density or pointer-driven assumptions into phone screens without justification.183- Brand-forward styling must remain localization-safe, overflow-safe, and accessibility-safe.184- Keep touch targets reachable and obvious; visual minimalism is not an excuse for tiny interactive areas.185- Design for edge-to-edge layouts and real insets from the start rather than bolting them on after the fact.186- Support phones, tablets, foldables, and multi-window states through adaptive structure, not one hardcoded canvas.187- Preserve the product's mental model when improving existing screens; do not redesign the workflow unless the request asks for it.188- Prefer clear hierarchy and recovery UX over decorative motion, ornamental surfaces, or extra chrome.189- At least one of spacing, typography, depth, or color emphasis should make the screen memorable; "safe but generic" is not the target outcome for this skill.190191## Anti-Patterns192- Designing a phone screen like a compressed web dashboard with tiny controls and dense top-level navigation.193- Using fixed widths or heights that cause clipping, truncation, or overlap as soon as text length changes.194- Treating English-only screenshots as proof that the design is complete.195- Hiding the primary action below the fold, behind the keyboard, or in visually weak chrome.196- Making every section a card, divider, or boxed surface until the screen becomes noisy and slow to scan.197- Relying on symmetry tricks that collapse in RTL or on narrow widths.198- Solving a layout bug by shortening copy instead of making the design structurally resilient.199- Rebuilding everything visually when a focused repair would fix the real issue.200- Mistaking visual busyness for premium quality.201- Shipping a screen that looks good statically but becomes fragile under IME, font scaling, or long-form content.202203## Examples204### Happy path205- Scenario: Create a new Android mobile screen from scratch with a strong hierarchy, clear primary action, adaptive shell, and brand-forward visual posture.206- Command: `bash skills/android-mobile-frontend-design/scripts/run_examples.sh`207208### Edge case209- Scenario: Improve an existing OrbitTasks Compose screen so it survives long localized strings, keyboard insets, and RTL mirroring without clipped controls.210- Command: `cd examples/orbittasks-compose && ./gradlew :app:assembleDebug`211212### Failure recovery213- Scenario: Fix an existing XML screen with truncation, cramped spacing, and weak empty/error states before escalating to a full redesign.214- Command: `cd examples/orbittasks-xml && ./gradlew :app:assembleDebug`215216## Done Checklist217- The operating mode is explicit: `create`, `improve`, or `fix`.218- The information hierarchy and primary action placement are clear before implementation details begin.219- The design direction is brand-forward but still mobile-native and platform-usable.220- Localization, RTL, overflow, keyboard, and inset stress cases have been considered explicitly.221- Compose-vs-Views routing is clear, and implementation work is handed off to the correct neighboring skill.222- The resulting guidance can be used to create a screen from scratch, improve an existing one, or repair a broken one without leaving major design decisions unresolved.223224## Official References225- [https://developer.android.com/develop/ui/compose](https://developer.android.com/develop/ui/compose)226- [https://developer.android.com/develop/ui/compose/designsystems/material3](https://developer.android.com/develop/ui/compose/designsystems/material3)227- [https://developer.android.com/develop/ui/compose/designsystems/custom](https://developer.android.com/develop/ui/compose/designsystems/custom)228- [https://developer.android.com/develop/ui/compose/system/material-insets](https://developer.android.com/develop/ui/compose/system/material-insets)229- [https://developer.android.com/develop/ui/compose/layouts/adaptive/use-window-size-classes](https://developer.android.com/develop/ui/compose/layouts/adaptive/use-window-size-classes)230- [https://developer.android.com/develop/ui/views/layout/responsive-adaptive-design-with-views](https://developer.android.com/develop/ui/views/layout/responsive-adaptive-design-with-views)231- [https://developer.android.com/training/basics/supporting-devices/languages.html](https://developer.android.com/training/basics/supporting-devices/languages.html)232- [https://developer.android.com/guide/topics/resources/localization](https://developer.android.com/guide/topics/resources/localization)233- [https://developer.android.com/guide/topics/resources/app-languages](https://developer.android.com/guide/topics/resources/app-languages)234- [https://developer.android.com/guide/topics/resources/internationalization](https://developer.android.com/guide/topics/resources/internationalization)235- [https://developer.android.com/guide/topics/ui/accessibility/apps](https://developer.android.com/guide/topics/ui/accessibility/apps)236- [https://developer.android.com/docs/quality-guidelines/large-screen-app-quality](https://developer.android.com/docs/quality-guidelines/large-screen-app-quality)