Android reference app

Material Design for Android

An offline Kotlin and Jetpack Compose gallery with 55 working references, reviewed API metadata, practical guidance, adaptive navigation, local personalization, and inspectable modular source.

Android 7.0+ No internet permission Validated catalog

Purpose

Experience, understand, and locate Material implementation

The running app is the visual and behavioral reference, the catalog explains design intent and API status, and the repository is the implementation truth. Users search an official name or alias, exercise real states, read use and avoid guidance, inspect accessibility and adaptation, separate API stability from artifact availability, and copy real source paths.

The app contains no accounts, ratings, simulated installs, lesson progress, remote catalog, or placeholder demonstrations.

Product destinations

A complete shell around the references

Explore

Featured, bookmarked, recently added, and recently viewed entries.

Catalog

All components grouped and filtered by official domain.

APIs

Stable and experimental API browsing with artifact and opt-in metadata.

Foundations

Color, shape, motion, elevation, layout, accessibility, and typography.

Detail

Preview, guidance, inspect, and API views for one stable catalog ID.

Settings and About

Appearance, local library, privacy, project links, license, and app version.

Catalog coverage

Every current reference

Actions7
  • Buttons
  • Button groups
  • Toggle buttons
  • Split buttons
  • Icon buttons
  • Floating action buttons
  • FAB menu
Communication10
  • Badges
  • Basic alert dialogs
  • Dialogs
  • Bottom sheets
  • Snackbars
  • Tooltips
  • Menus
  • Grouped dropdown menus
  • Progress indicators
  • Loading indicators
Containment7
  • Cards
  • Lists
  • Segmented list items
  • Carousels
  • Hero carousels
  • Pull to refresh
  • Swipe to dismiss
Navigation11
  • Top app bars
  • Bottom app bars
  • Flexible bottom app bars
  • Navigation bars
  • Short navigation bars
  • Navigation rails
  • Wide navigation rails
  • Navigation drawers
  • Tabs
  • Scrollable tab row variants
  • Floating toolbars
Selection and input11
  • Chips
  • Segmented buttons
  • Selection controls
  • Sliders
  • Vertical sliders
  • Date pickers
  • Time pickers
  • Time picker dialogs
  • Text fields
  • Search
  • Top search bars and full-screen search
Foundations and layout9
  • Color
  • Shape
  • Motion
  • Elevation
  • Layout
  • Accessibility
  • Typography
  • Dividers
  • Scaffold

Architecture

Long-lived boundaries

material-app/app/Composition root, typed routes, adaptive shell, search, state, and demo registrymaterial-app/core/catalog/Versioned JSON, models, validation, deterministic search, and source lookupmaterial-app/core/data/Preferences DataStore for bookmarks, recents, themes, accents, and motionmaterial-app/core/designsystem/Material theme, schemes, presets, OLED, accent generation, and expressive motionmaterial-app/feature/Explore, Catalog, APIs, Foundations, Detail, and Settingsmaterial-app/samples/Copyable state-hoisted implementations grouped by official domain

State and search

Immediate input, off-main derivation

The ViewModel exposes independent flows for catalog load, root destination, category, API stability, query, search, bookmarks, recents, settings, and one-shot events. Search text updates immediately; non-empty result work is debounced and runs away from the main thread. Exact names and API symbols rank ahead of aliases, categories, summaries, and guidance.

Personalization

Local choices across theme and motion

Theme modes

System, light, dark, and OLED.

Color

Dynamic Material You, monochrome, curated accents, and custom color.

Presets

Default, Dracula, Tokyo Night, and custom.

Motion

Expressive system motion or reduced motion that preserves meaning and safety.

Library

Bookmarks and bounded recent history.

Cleanup

Clear bookmarks or recent history from Settings.

Privacy

Offline by construction

  • No internet permission, ads, analytics, telemetry, trackers, account, or remote service.
  • The bundled catalog works without network access.
  • Preferences remain local and are excluded from cloud backup and device transfer.
  • Official documentation and project links open in another app only after user action.

Verification and release

Tests and artifacts validate the same contract

Build-logic, catalog, DataStore, motion, ViewModel, demo registry, backup rules, and navigation have focused coverage. Release builds add lint vital analysis, R8 optimization, resource shrinking, deterministic APK naming, and local signing when all ignored credentials are present.

cd material-app
.\gradlew.bat -p build-logic :convention:test --warning-mode all
.\gradlew.bat testDebugUnitTest verifyMaterialBuildConventions checkProductionStrings --warning-mode all
.\gradlew.bat :app:assembleDebug --warning-mode all
.\gradlew.bat :app:assembleRelease --warning-mode all

The application version is read from gradle.properties, not duplicated on this page. A release is ready only after APK metadata, signing identity, and checksum are verified.