Zjistěte, co je Material Design — návrhový systém Google založený na principech materiálnosti, hloubky a přizpůsobivosti, který spojuje průvodce vizuálním jazykem, animací, rozvržením a komponenty rozhraní. Ve verzi Material Design 3 (Material You) systém zahrnuje dynamické barevné schéma na základě tapety zařízení, adaptivní typografii a rozšířené komponenty. Podle Google I/O 2024 používá Material Design více než 3 miliony aplikací v Google Play, což z něj činí nejrozšířenější návrhový systém na Androidu.
Hlavní body
Material Design (kódové označení Project Quantum) — návrhový systém Google, poprvé oznámený na Google I/O 2014 a poprvé implementovaný v Android 5.0 Lollipop. Cílem Material Design je vytvořit jednotný vizuální jazyk pro všechny produkty Google a aplikace pro Android, založený na fyzických vlastnostech papíru a inkoustu — „materiálu”. Na rozdíl od plochého designu (Flat Design) přidává Material Design fyzickou hloubku, stíny, vrstvy a realistickou animaci.
Od roku 2014 prošel Material Design třemi hlavními verzemi: Material 1 (2014) — původní průvodce s kartami a Floating Action Button; Material 2 (2018) — zjednodušení vizuálního jazyka, větší mezery, důraz na typografii; Material 3 / Material You (2021) — dynamické barevné schéma generované na základě tapety zařízení, personalizace. Podle Google Play Console (2024) používá 78% z top 1000 aplikací Google Play Material Components pro Android.
Material Design není jen UI-kit, ale kompletní návrhový systém: průvodce přístupností (a11y), animací (Motion), adaptivním rozvržením (Responsive Layout), komponenty (TopAppBar, BottomNavigation, Navigation Drawer), typografií (Material Type Scale) a ikonografií (Material Symbols). V IT Sectr používáme Material Design jako základní návrhový systém pro projekty na Androidu od roku 2014 a přizpůsobujeme ho značce klienta pomocí Material Theme Builder.
Materiálnost (Material as Metaphor) — klíčový princip Material Design, který si vypůjčuje fyzické vlastnosti papíru: materiál má povrch, tloušťku (1dp), vrhá stín (Elevation) a zabírá prostor (Bounds). Prvky rozhraní — karty, tlačítka, panely — se chovají jako fyzické objekty: při stisknutí se zvednou (efekt ripple), překrývají se (osa Z) a animují se při objevení (motion).
Hloubka (Depth) je vytvářena pomocí Elevation — vlastnosti materiálu určující jeho polohu na ose Z. Čím vyšší je Elevation (8dp, 16dp), tím větší stín prvek vrhá. Karta má Elevation 1–2dp, FAB — 6dp, Modal BottomSheet — 16dp. Hloubka se používá k předávání hierarchie: modální okna a dialogy jsou vždy nad obsahem, Navigation Drawer — nad Action Bare. Hloubka nahrazuje trojrozměrnou perspektivu plochou Z-vrstvou, čímž zachovává výkon vykreslování.
Pohyb (Motion) — animace v Material Design není dekorativní, ale funkční. Animace by měla: 1) směrovat pozornost uživatele (rozbalení karty s podrobnostmi), 2) vysvětlovat prostorové vztahy (AppBar se při rolování mění na TopAppBar), 3) zajišťovat plynulost přechodů (shared element transition mezi obrazovkami). Podle Google Material Guidelines (2024) by animace neměla přesáhnout 300ms pro mikrointerakce a 500ms pro přechody mezi obrazovkami — delší animace jsou vnímány jako zpoždění.
Material You (Material Design 3) — největší aktualizace návrhového systému, představená v roce 2021 spolu s Androidem 12. Hlavní inovace — dynamické barvy (Monet): systém automaticky extrahuje 5 klíčových barev z tapety zařízení a generuje kompletní barevnou paletu z 15 tónů (primary, secondary, tertiary, error s jejich light/dark variantami) s vypočtenými poměry kontrastu WCAG AA.
Barevný model Material You je postaven na HCT (Hue, Chroma, Tone) — barevném prostoru vyvinutém Googlem, který kombinuje lidské vnímání (Hue) se sytostí (Chroma) a jasem (Tone). Na rozdíl od HSL/HSV HCT zaručuje, že všechny generované tóny mají stanovený kontrast na bílém a černém pozadí. Google Material Guidelines (2024) doporučuje používat pouze tonální varianty hlavní palety pro text, tóny surface pro pozadí a primary-container pro akcentní plochy.
Uživatel si může vybrat jeden ze 4 personalizačních schémat: TonalSpot (hlavní barva z tapety), Vibrant (nejsytější barva), Expressive (další živé barvy), Neutral (monochromatická gama). Material Theme Builder (material-foundation.github.io) umožňuje exportovat téma Material 3 do XML, Compose Theme, CSS a dokonce i do pluginu Figma.
Material Components pro Android (MDC-Android) — oficiální knihovna Google poskytující hotové View komponenty odpovídající průvodcům Material Design. Pro XML rozvržení je knihovna k dispozici prostřednictvím závislosti com.google.android.material:material, aktuální verze k červnu 2026 — 1.12.0.
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/topAppBar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:title="@string/app_name"
app:menu="@menu/main_menu" />
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardElevation="2dp"
app:strokeWidth="1dp"
app:strokeColor="@color/outline">
<LinearLayout android:orientation="vertical" ...>
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.Material3.TextInputLayout.OutlinedBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:endIconMode="clear_text">
<com.google.android.material.textfield.MaterialAutoCompleteTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/city_hint" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.button.MaterialButton
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.Material3.Button.MaterialYou"
android:text="@string/submit" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_add"
app:layout_anchor="@id/topAppBar"
app:layout_anchorGravity="bottom|end" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>Příklad ukazuje Material obrazovku s MaterialToolbar (TopAppBar), MaterialCardView s vlastními mezerami a okrajem, TextInputLayout s rozevíracím seznamem a MaterialButton ve stylu Material3. FAB je připojen k Toolbaru jako kotva — standardní schéma pro master-detail rozhraní.
@Composable
fun MaterialYouScreen() {
val colorScheme = MaterialTheme.colorScheme
Scaffold(
topBar = {
TopAppBar(
title = { Text("Material You") },
colors = TopAppBarDefaults.topAppBarColors(
containerColor = colorScheme.primaryContainer,
titleContentColor = colorScheme.onPrimaryContainer
)
)
},
floatingActionButton = {
FloatingActionButton(
onClick = { },
containerColor = colorScheme.tertiaryContainer
) {
Icon(
imageVector = Icons.Default.Add,
contentDescription = "Add"
)
}
}
) { paddingValues ->
Column(
modifier = Modifier.padding(paddingValues)
) {
OutlinedTextField(
value = "",
onValueChange = { },
label = { Text("Město") },
colors = OutlinedTextFieldDefaults.colors(
focusedBorderColor = colorScheme.primary,
unfocusedBorderColor = colorScheme.outline
)
)
Button(
onClick = { },
modifier = Modifier.fillMaxWidth()
) {
Text("Odeslat")
}
}
}
}
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme(
colorScheme = dynamicLightColorScheme(this),
typography = MaterialTheme.typography
) {
MaterialYouScreen()
}
}
}
}Kód demonstruje téma Material You v Compose: dynamicLightColorScheme() automaticky generuje barevné schéma na základě tapety zařízení. Scaffold poskytuje standardní kostru s TopAppBar a FAB. OutlinedTextField a Button jsou komponenty Material 3, jejichž barvy pocházejí z dynamického colorScheme. Při změně tapety se všechny barvy aplikace automaticky aktualizují — personalizace bez úpravy kódu.
Material Components pro iOS (MDC-iOS) — knihovna poskytující nativní UIKit komponenty implementující Material Design na iOS. Vzhledem k tomu, že iOS má svůj vlastní návrhový systém (Human Interface Guidelines), Material komponenty se na iOS používají méně často, ale jsou nezbytné v cross-platform aplikacích, kde je vyžadován jednotný vizuální styl mezi Androidem a iOS.
MDC-iOS zahrnuje AppBar, BottomNavigation, Cards, Chips, Dialogs, Snackbar, Tabs a TextFields stylizované podle Material Design. Knihovna je k dispozici přes CocoaPods (pod 'MaterialComponents') a Swift Package Manager. Apple Human Interface Guidelines (2024) nedoporučuje úplné nahrazení nativních UIKit komponent Material ekvivalenty, ale povoluje použití Material komponent pro vlastní rozhraní za podmínky zachování nativní navigace (NavigationStack, UITabBarController).
V IT Sectr používáme Material Components na iOS pouze pro aplikace portované z Androidu (cross-platform projekty s Flutter nebo Kotlin Multiplatform). Pro nativní iOS aplikace se řídíme HIG a používáme UIKit/SwiftUI s vlastním stylováním pod značkou klienta. Podle průzkumu Swift Community (2024) používá Material Components pro iOS 8% vývojářů, převážně v hybridních projektech.
Material Design — není jediným návrhovým systémem na trhu. Největší konkurenti: Apple Human Interface Guidelines (iOS/macOS), Fluent Design (Microsoft), Carbon (IBM), Polaris (Shopify), Lightning (Salesforce). Každý systém je optimalizován pro svou platformu: Material Design — pro Android, HIG — pro iOS, Fluent — pro Windows. Výběr návrhového systému je určen cílovou platformou a ekosystémem.
| Vlastnost | Material Design | Apple HIG | Fluent Design |
|---|---|---|---|
| Platforma | Android, Web, Flutter | iOS, macOS, watchOS, tvOS | Windows 10/11, .NET MAUI |
| Barevný systém | HCT (Hue-Chroma-Tone) | Sémantický + akcentní barva | Akrylový + Reveal highlight |
| Typografie | Material Type Scale (13 stylů) | SF Pro (9 stylů) | Segoe UI Variable |
| Personalizace | Dynamic color (Monet) | Není předpokládána | Nastavení akcentní barvy |
| Animace | Systém Motion (300–500ms) | UIKit spring animace | Fluent Motion (Fluent 2) |
| Open source | Ano (GitHub, Apache 2.0) | Ne (uzavřený) | Ano (GitHub, MIT) |
Hlavní výhoda Material Design je otevřenost a cross-platform podpora. Průvodci, komponenty a nástroje (Material Theme Builder) jsou k dispozici zdarma, což činí systém oblíbeným mezi startupy a nezávislými vývojáři. Apple HIG je pevně svázán s ekosystémem Apple, ale poskytuje nejlepší shodu s platformovými očekáváními uživatelů. Pro cross-platform projekty je Material Design optimální volbou díky Flutter a Jetpack Compose Multiplatform.
Často kladené otázky
Technicky — ne, Google nevyžaduje povinné používání Material Components. Doporučení — ano, Material Design je součástí Compatibility Test Suite (CTS) a Android Design Guidelines. Aplikace, které nepoužívají Material komponenty, mohou být méně konzistentní se systémovými aplikacemi Android. Google Play Console neodmítá aplikace za odmítnutí Material Design, ale uživatelé očekávají známé vzory — FAB, BottomNavigation, TopAppBar.
Material Theme Builder (material-foundation.github.io) umožňuje nahrát logo značky a vygenerovat vlastní téma ve 3 kliknutích. Nástroj extrahuje klíčové barvy, generuje 15tónovou paletu a exportuje téma do XML, Compose a Figma. Dále lze přizpůsobit typografii (Material Type Scale) a tvar komponent (Shape scheme) — zaoblení rohů pro karty, tlačítka a dialogy. Přizpůsobení nesmí porušovat základní pravidla Material Design (kontrast, Elevation, Motion).
Dynamic Color (Monet) — mechanismus Android 12+, který automaticky generuje barevné schéma aplikace na základě tapety zařízení. Systém analyzuje dominantní barvy tapety pomocí algoritmu K-means, převádí je do prostoru HCT, generuje 5 základních tónů (primary, secondary, tertiary, neutral, error) a 3 varianty každého (container, on-container, fixed). Vývojář stačí zavolat dynamicLightColorScheme() v Compose nebo aplikovat DynamicColors.applyToActivity() v XML a všechny komponenty Material 3 automaticky převezmou nové barvy.
Neexistuje přímý port Material Design pro SwiftUI. Material Components pro iOS jsou napsány v UIKit. Pro SwiftUI lze použít vlastní modifikátory View, které reprodukují Material styly (material stíny pomocí .shadow(), výška pomocí .zIndex(), efekt ripple pomocí .hoverEffect()). Pro cross-platform projekty ve Flutter je Material Design nativně integrován — Flutter obsahuje kompletní implementaci Material 3 v balíčku flutter/material.dart.
Material You je marketingový název pro Material Design 3 (verze 3). Není to samostatný systém, ale největší aktualizace Material Design, představená v roce 2021. Zahrnuje dynamické barvy (Monet), adaptivní typografii (Material Type Scale v2), nové komponenty (NavigationBar místo BottomNavigation, NavigationRail) a aktualizované průvodce přístupností. Termín Material You zdůrazňuje personalizaci — rozhraní se “přizpůsobuje vám” prostřednictvím Dynamic Color.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také