Android Design Cheat Sheet: Material Design Principles & Best Practices

Introduction

Android design is centered around Material Design, Google’s comprehensive design system for creating intuitive, consistent, and beautiful user experiences across platforms and device sizes. This cheat sheet provides essential guidelines, specifications, and best practices for designing Android applications that adhere to Material Design principles while providing optimal user experiences.

Core Material Design Principles

Design Philosophy

  • Material as a metaphor: Interface elements behave like physical materials with surfaces, edges, and movements
  • Bold, graphic, intentional: Elements should be visually distinctive and deliberate
  • Motion provides meaning: Animations should guide users and provide visual feedback

Design Pillars

PillarDescription
Material YouPersonalized design system adapting to user preferences
AccessibilityDesigns usable by everyone, including those with disabilities
AdaptabilityResponsive layouts for all screen sizes and orientations
Cross-platformConsistent experience across Android, web, and other platforms
Brand expressionFramework for expressing unique brand identity

Layout Fundamentals

Screen Dimensions and Density

Common Screen Sizes

Device TypeSize Range (diagonal)Common Resolutions
Phones4.0″ – 6.7″720 × 1280px (HD)<br>1080 × 1920px (FHD)<br>1440 × 2560px (QHD)
Tablets7.0″ – 13.0″1200 × 1920px<br>1600 × 2560px<br>2560 × 1600px
Foldables6.0″ – 8.0″ (folded)<br>7.3″ – 10.0″ (unfolded)Varies by model

Density Buckets

DensityDPI RangeScaling Factor
ldpi~120dpi0.75x
mdpi~160dpi1.0x (baseline)
hdpi~240dpi1.5x
xhdpi~320dpi2.0x
xxhdpi~480dpi3.0x
xxxhdpi~640dpi4.0x

Responsive Layout Grid

Grid Anatomy

  • Columns: Content containers that scale with screen size
  • Gutters: Spaces between columns
  • Margins: Space between content and screen edges

Common Grid Patterns

Screen SizeColumn CountMargin WidthGutter Width
Phone (small)4 columns16dp8dp
Phone (medium)4-8 columns16-24dp8-16dp
Tablet8-12 columns24-48dp16-24dp

Key Layout Measurements

Basic Spacing

ElementDimensionNotes
Touch targets48 × 48dp minimumFor buttons, icons, and interactive elements
Element spacing8dp incrementsUse multiples of 8dp for consistency (8, 16, 24, etc.)
Content padding16dp typicalStandard inner padding for containers
Screen margins16dp typicalStandard screen edge margins

Component Placement

  • App bars: 56dp height (portrait), 48dp height (landscape)
  • Navigation bars: 80dp height (bottom), 56dp height (side)
  • Floating Action Button (FAB): 16dp margins from screen edge
  • Bottom sheets: 56dp peek height minimum

Typography

Type Scale

StyleWeightSizeLine HeightLetter SpacingUsage
Display Large400 (Regular)57sp64dp-0.25pxLarge headers, splash screens
Display Medium400 (Regular)45sp52dp0pxMajor section headers
Display Small400 (Regular)36sp44dp0pxMedium headers
Headline Large400 (Regular)32sp40dp0pxImportant headlines
Headline Medium400 (Regular)28sp36dp0pxHeaders, dialogs
Headline Small400 (Regular)24sp32dp0pxSecondary headers
Title Large400 (Regular)22sp28dp0pxCard titles, major labels
Title Medium500 (Medium)16sp24dp0.15pxPrimary button text, dialog titles
Title Small500 (Medium)14sp20dp0.1pxButton text, emphasized small text
Body Large400 (Regular)16sp24dp0.5pxPrimary body text
Body Medium400 (Regular)14sp20dp0.25pxSecondary body text
Body Small400 (Regular)12sp16dp0.4pxHelp text, captions
Label Large500 (Medium)14sp20dp0.1pxMedium emphasis labels
Label Medium500 (Medium)12sp16dp0.5pxSmall labels
Label Small500 (Medium)11sp16dp0.5pxSmallest readable text

Font Recommendations

  • Roboto: Android’s default system font through Android 11
  • Google Sans: Used for product branding and headlines
  • Product Sans: For Google product logos
  • System default: Respects user’s system font choice on Android 12+

Text Styling Best Practices

  • Use hierarchical typography with clear visual distinction between levels
  • Keep body text at 16sp minimum for readability
  • Use appropriate weights to create emphasis (rather than just size changes)
  • Maintain high contrast ratios (4.5:1 minimum for accessibility)
  • Consider line length (aim for 40-60 characters per line)
  • Use dynamic text sizing (sp units) to respect user’s system font size settings

Color System

Material Theme Color Roles

Primary Color Palette

RoleUsageRequirements
PrimaryMain brand colorHigh contrast with text
On PrimaryText/icons on primary surfaces4.5:1 minimum contrast with primary
Primary ContainerContainer backgroundsLightened/darkened version of primary
On Primary ContainerText on primary containers4.5:1 minimum contrast with primary container

Secondary Color Palette

RoleUsageRequirements
SecondaryAccent color, highlightsComplement to primary color
On SecondaryText/icons on secondary4.5:1 minimum contrast
Secondary ContainerAccented containersTinted backgrounds
On Secondary ContainerText on secondary containers4.5:1 minimum contrast

Additional Color Roles

RoleUsageNotes
TertiaryAdditional accentUsed sparingly for emphasis
ErrorError states, alertsTypically red-based
BackgroundScreen backgroundsLight in light theme, dark in dark theme
SurfaceCards, sheets, dialogsLight in light theme, dark in dark theme
Surface VariantAlternative surfacesFor visual separation
OutlineBoundaries, dividersLow-emphasis separation

Dark Theme Considerations

  • Saturation Differences: Colors typically higher saturation in dark theme
  • Surface Colors: Multiple surface tonal variations (surface1, surface2, etc.)
  • Elevation Effect: Higher elevation surfaces appear lighter in dark theme
  • Content Contrast: Light text on dark backgrounds requires different weight/size considerations

Color Accessibility

  • Ensure 4.5:1 contrast ratio for normal text (14pt and smaller)
  • Ensure 3:1 contrast ratio for large text (14pt bold or 18pt+)
  • Test designs in grayscale for color blindness compatibility
  • Don’t rely solely on color to convey information
  • Use Material Theme Builder to generate accessible color schemes

Component Guidelines

Common UI Components

Buttons

TypeUsageDimensions
FilledPrimary actionsHeight: 40dp<br>Min width: 64dp<br>Padding: 16dp horizontal
OutlinedSecondary actionsHeight: 40dp<br>Border: 1dp<br>Padding: 16dp horizontal
TextTertiary actionsHeight: 40dp<br>Min width: 64dp<br>Padding: 8dp horizontal
IconCompact actionsSize: 40 × 40dp<br>Icon: 24 × 24dp
FABPrimary screen actionSize: 56 × 56dp (standard)<br>40 × 40dp (small)<br>96 × 96dp (large)

Text Fields

TypeUsageDimensions
FilledStandard inputHeight: 56dp<br>Padding: 16dp horizontal
OutlinedAlternative input styleHeight: 56dp<br>Padding: 16dp horizontal<br>Border: 1dp
Text AreaMultiline inputMin height: 112dp<br>Padding: 16dp

Cards

TypeUsageSpecifications
ElevatedStandalone contentElevation: 1dp<br>Radius: 12dp<br>Padding: 16dp
FilledGrouped contentElevation: 0dp<br>Radius: 12dp<br>Background: surface variant
OutlinedBounded contentBorder: 1dp<br>Radius: 12dp<br>Padding: 16dp

Selection Controls

TypeDimensionsStates
CheckboxTouch area: 48 × 48dp<br>Icon: 18 × 18dpUnchecked, checked, indeterminate
Radio buttonTouch area: 48 × 48dp<br>Icon: 20 × 20dpSelected, unselected
SwitchTrack: 52 × 32dp<br>Thumb: 24 × 24dpOn, off

Navigation Elements

TypeUsageDimensions
Bottom navigation3-5 destinationsHeight: 80dp<br>Icon: 24dp<br>Label: 12sp
Navigation railTablet/desktop navWidth: 80dp<br>Icon: 24dp<br>Label: 12sp
Navigation drawerMany destinationsWidth: 360dp (standard)<br>Width: 256dp (modal)
Top app barScreen contextHeight: 64dp (center)<br>Height: 56dp (small)
TabsContent categoriesHeight: 48dp<br>Padding: 16dp horizontal

Component Spacing

  • Button content: 8dp between icon and label
  • List items: 16dp vertical spacing
  • Card content: 8dp between elements
  • Dialog padding: 24dp
  • Form fields: 16dp vertical spacing

Motion and Animation

Animation Duration Guidelines

TypeDurationUsage
Small100-150msSmall UI element changes
Medium200-300msMost transitions, page changes
Large300-400msComplex animations, entrances
Extra large400-500msFull-screen transitions

Common Animation Patterns

PatternUsageSpecifications
Shared element transitionObject continuityElement morphs between screens
Fade throughContent changeFade out, then fade in new content
Container transformExpanding elementsElement expands to new container
FadeSubtle changesSimple opacity changes
ScaleEmphasisSize changes with easing
Material motionPhysical motionFollows physics properties

Easing Curves

TypeFunctionUsage
Standardcubic-bezier(0.2, 0.0, 0.0, 1.0)Most transitions
Acceleratecubic-bezier(0.3, 0.0, 1.0, 1.0)Elements exiting screen
Deceleratecubic-bezier(0.0, 0.0, 0.2, 1.0)Elements entering screen
Sharpcubic-bezier(0.4, 0.0, 0.6, 1.0)Quick transitions

Iconography

System Icons

  • Size: 24 × 24dp baseline
  • Touch target: 48 × 48dp minimum
  • Keyline: Place icons on 16dp or 24dp increments from screen edge
  • Padding: 4dp padding within 24dp frame (resulting in 20 × 20dp visual size)

Icon Guidelines

TypeUsageSpecifications
Product iconsApp launcher iconsAdaptive icon format with:<br>- Foreground: 108 × 108dp centered in 108 × 108dp transparent space<br>- Background: 108 × 108dp
System iconsUI functionality24 × 24dp with 2dp stroke width
Small iconsSecondary actions20 × 20dp with 2dp stroke width

Icon States

StateAppearance
Enabled100% opacity
Disabled38% opacity
PressedRipple effect
SelectedFilled or highlighted

Accessibility Guidelines

Touch Target Sizes

  • Minimum size: 48 × 48dp for all interactive elements
  • Spacing: 8dp minimum space between touch targets
  • Density: Avoid crowding interactive elements

Content Guidelines

  • Text contrast: 4.5:1 minimum for normal text, 3:1 for large text
  • Non-text contrast: 3:1 minimum for interface components and graphics
  • Text size: Minimum 12sp for all readable text
  • Content scaling: Support system font size adjustments up to 200%

Screen Reader Support

  • Provide meaningful content descriptions for all images and icons
  • Use proper semantic markup (headings, lists, etc.)
  • Maintain logical focus order
  • Group related elements with containers
  • Use Android’s accessibility services and testing tools

Input Methods

  • Support keyboard navigation
  • Provide alternative input methods
  • Make gestures simple and consistent
  • Include visible focus indicators

Common Design Patterns

Navigation Patterns

PatternBest ForNotes
Bottom navigationMobile apps with 3-5 key destinationsProvides direct access to primary destinations
Navigation drawerApps with many top-level destinationsGood for complex navigation hierarchies
Navigation railTablet/desktop layoutsSide navigation for larger screens
TabsSwitching between related contentUse for peer content at same hierarchy level
Up buttonMoving up navigation hierarchyAlways show when not at top level

Content Display Patterns

PatternBest ForNotes
ListsCollections of itemsUse dividers or spacing for clarity
GridsVisual collectionsGood for image-heavy content
CardsGrouped contentContain related information in discrete units
Expandable panelsProgressive disclosureHide secondary content until needed
Bottom sheetsSupplementary contentSurface from bottom without full-screen transition

Form Patterns

PatternBest ForNotes
Inline validationReal-time feedbackShow errors as user types
Stepped formsComplex data entryBreak into logical sections
AutocompleteReducing typingSuggest options as user types
Selection controlsBinary choicesUse appropriate control for context
PickersStandardized inputDate, time, color selectors

Common Challenges and Solutions

Responsive Design Challenges

ChallengeSolution
Different screen sizesUse responsive grid system with breakpoints
Orientation changesTest layouts in both portrait and landscape modes
Split screen supportDesign flexible layouts that adapt to reduced width
Foldable devicesConsider continuity across fold, test on emulators
Multi-window modeEnsure UI remains usable at minimum sizes (220dp width)

Dark Theme Implementation

ChallengeSolution
Color shiftingUse Material Color Utilities to generate appropriate dark variants
Image compatibilityProvide alternative assets or apply filters for dark theme
Elevation perceptionUse surface tonal variations instead of shadows in dark theme
System barsAdapt status and navigation bar colors to match theme
TestingVerify contrast ratios remain accessible in dark theme

Performance Considerations

ChallengeSolution
Animation jankKeep animations simple, test on low-end devices
Large imagesUse appropriate resolution for screen density
Complex layoutsMinimize nested ViewGroups, use ConstraintLayout
Transition stutteringUse hardware acceleration, optimize animations
Battery drainMinimize animations, use dark theme where possible

Best Practices and Tips

Design Workflow Tips

  • Start with wireframes before adding visual design elements
  • Use a component-first approach with Material Design components
  • Test designs across multiple device sizes early in the process
  • Create a consistent visual language throughout your app
  • Maintain a design system with reusable components

Visual Hierarchy

  • Direct user attention with size, color, and spacing
  • Create clear relationship between elements with alignment
  • Use white space strategically to group and separate content
  • Apply the 60-30-10 rule for color distribution (primary, secondary, accent)
  • Design for F-pattern and Z-pattern reading flows

UI Polish Techniques

  • Maintain consistent padding and alignment throughout
  • Use subtle animations for feedback and transitions
  • Ensure touch targets are appropriately sized
  • Apply elevation consistently for depth perception
  • Test color schemes in various lighting conditions

Performance Optimization

  • Optimize images and assets for each density bucket
  • Use vector drawables when possible
  • Minimize over-drawing and layer count
  • Simplify animations and transitions on low-end devices
  • Test scrolling performance with realistic content volumes

Resources for Further Learning

Official Documentation

Design Tools

Accessibility Resources

Community Resources

Scroll to Top