Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Material Design 2.0
Search
The Funtasty
February 21, 2019
Technology
190
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Material Design 2.0
The Funtasty
February 21, 2019
More Decks by The Funtasty
See All by The Funtasty
Kolik nástrojů umíš, tolikrát jsi designérem
thefuntasty
0
82
Jak jsme redesignovali Kiwi.com appku a snad při tom nikoho nena***li
thefuntasty
0
51
Důležitost brandingu při návrhu webu, aneb jak důležité je poznat ducha značky
thefuntasty
0
65
Live Wallpapers in Processing
thefuntasty
0
83
MVI architektura
thefuntasty
0
290
Other Decks in Technology
See All in Technology
名古屋の市バスGTFS-JPデータ×スガキヤ 最寄りバス停検索をAmazon ElastiCache Serverless for Valkeyで最適化する
usanchuu
1
140
【CEDEC2026】次世代デジタルカードゲームのサーバー設計と運用 〜『Shadowverse: Worlds Beyond』の舞台裏~
cygames
PRO
0
240
新しい SLO が良い感じにハマっている話
z63d
4
2k
組織にどうSREを根付かせるか?〜IVRyの場合〜
abnoumaru
0
280
Amazon Bedrock Managed Knowledge BaseDive Deep
ren8k
0
350
OSPN.JPバージョンアップ作業進捗のご報告 / 20260801-osc26kyoto
akkiesoft
0
170
データ組織の転換期 一足飛びしない段階的戦略
leveragestech
PRO
0
140
AIがAPIを書く時代に、私たちは何を設計すべきか
nagix
0
200
QAと開発の両側から進める AI活用 -QAプロセスAI支援ツールキットと Inner Loop / Outer Loopの取り組み-
legalontechnologies
PRO
2
410
『モンスターストライク』 の運営に伴走する! データ民主化への 解析グループの3つのアプローチ
mixi_engineers
PRO
0
210
LLMリーダーボードアップデートに向けたAgentic Math_SWEのトレースについて
nejumi
0
200
20260608_Codexの可能性_ノンプログラマー向け_大城追記
doradora09
PRO
0
740
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
141
7.6k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Odyssey Design
rkendrick25
PRO
2
740
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
920
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
330
How STYLIGHT went responsive
nonsquared
100
6.2k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
880
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
280
Being A Developer After 40
akosma
91
590k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.2k
Transcript
Material Design 2.0 Martin Matejčík
About Material Design Material Design announced Google I/O 2014 Design
Support library announced Google I/O 2015 Material Theming announced Google I/O 2018
None
dependencies { implementation 'com.android.support:design:28.0.0' } <style name="YourTheme" parent="Theme.AppCompat.Light.NoActionBar"/>
dependencies { implementation 'com.android.support:design:28.0.0' } dependencies { implementation 'com.google.android.material:material:1.1.0-alpha03' }
<style name="YourTheme" parent="Theme.AppCompat.Light.NoActionBar"/> <style name=“YourTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
dependencies { implementation 'com.android.support:design:28.0.0' } dependencies { implementation 'com.google.android.material:material:1.1.0-alpha03' }
<style name="YourTheme" parent="Theme.AppCompat.Light.NoActionBar"/> <style name=“YourTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <style name=“YourTheme" parent="Theme.MaterialComponents.Bridge"> Workaround:
Theming
View Style Default Style Theme
View Style Default Style Theme <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white"/>
View Style Default Style Theme <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white"/> <style
name="ButtonStyle"> <item name="android:textColor">@color/white</item> </style>
View Style Default Style Theme <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white"/> <style
name="ButtonStyle"> <item name="android:textColor">@color/white</item> </style> <style name="AppTheme"> <item name="buttonStyle">@style/ButtonStyle</item> </style>
View Style Default Style Theme <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white"/> <style
name="ButtonStyle"> <item name="android:textColor">@color/white</item> </style> <style name="AppTheme"> <item name="buttonStyle">@style/ButtonStyle</item> </style> <style name="AppTheme"> <item name="colorPrimary">@color/colorPrimary</item> </style>
None
Material Components
None
Shape System
None
Small Components Medium Components Large Components Button Chip Floating action
button Filled text field Outlined text field Snackbar Card Dialog Menu Bottom Sheet Navigation drawer
Global shapeAppearance <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <item name="shapeAppearanceSmallComponent">@style/ShapeAppearance.MaterialComponents.SmallComponent</item> <item name="shapeAppearanceMediumComponent">@style/ShapeAppearance.MaterialComponents.MediumComponent</item> <item
name="shapeAppearanceLargeComponent">@style/ShapeAppearance.MaterialComponents.LargeComponent</item> </style>
Component shapeAppearance <style name="RoundedShapeAppearance" parent="ShapeAppearance.MaterialComponents.SmallComponent"> <item name="cornerFamily">rounded</item> <item name="cornerSize">16dp</item> </style>
<style name=“MyButtonStyle"> <item name="shapeAppearance">@style/RoundedShapeAppearance</item> </style>
Component shapeAppearance <style name="CutShapeAppearance" parent="ShapeAppearance.MaterialComponents.MediumComponent"> <item name="cornerFamily">cut</item> <item name="cornerSize">16dp</item> </style>
<style name=“MyButtonStyle"> <item name="shapeAppearance">@style/CutShapeAppearance</item> </style>
Demo
None
None
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <item name="colorPrimary">@color/purple</item> <item name=“colorPrimaryVariant">@color/purple_dark</item> <item name="colorSecondary">@color/lime</item> <item
name=“colorSecondaryVariant">@color/lime_dark</item> <item name="colorOnPrimary">@color/white</item> <item name=“colorOnSecondary">@color/black</item> ... </style>
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <item name="colorPrimary">@color/purple</item> <item name=“colorPrimaryVariant">@color/purple_dark</item> <item name="colorSecondary">@color/lime</item> <item
name=“colorSecondaryVariant">@color/lime_dark</item> <item name="colorOnPrimary">@color/white</item> <item name=“colorOnSecondary">@color/black</item> ... </style>
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <item name="colorPrimary">@color/purple</item> <item name=“colorPrimaryVariant">@color/purple_dark</item> <item name="colorSecondary">@color/lime</item> <item
name=“colorSecondaryVariant">@color/lime_dark</item> <item name="colorOnPrimary">@color/white</item> <item name=“colorOnSecondary">@color/black</item> ... </style>
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <item name="colorPrimary">@color/purple</item> <item name=“colorPrimaryVariant">@color/purple_dark</item> <item name="colorSecondary">@color/lime</item> <item
name=“colorSecondaryVariant">@color/lime_dark</item> <item name="colorOnPrimary">@color/white</item> <item name=“colorOnSecondary">@color/black</item> ... </style>
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <item name="colorPrimary">@color/purple</item> <item name=“colorPrimaryVariant">@color/purple_dark</item> <item name="colorSecondary">@color/lime</item> <item
name=“colorSecondaryVariant">@color/lime_dark</item> <item name="colorOnPrimary">@color/white</item> <item name=“colorOnSecondary">@color/black</item> ... </style>
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <item name="colorPrimary">@color/purple</item> <item name=“colorPrimaryVariant">@color/purple_dark</item> <item name="colorSecondary">@color/lime</item> <item
name=“colorSecondaryVariant">@color/lime_dark</item> <item name="colorOnPrimary">@color/white</item> <item name=“colorOnSecondary">@color/black</item> ... </style>
<style name="AppTheme" parent=“Theme.MaterialComponents.Light.NoActionBar"> ... <item name="toolbarStyle">@style/Widget.MaterialComponents.Toolbar.Primary</item> <item name=“floatingActionButtonStyle”>@style/Widget.Mat...FloatingActionButton</item> ... </style>
<style name="AppTheme" parent=“Theme.MaterialComponents.Light.NoActionBar"> ... <item name="toolbarStyle">@style/Widget.MaterialComponents.Toolbar.Primary</item> <item name=“floatingActionButtonStyle”>@style/Widget.Mat...FloatingActionButton</item> ... </style>
<style name="AppTheme" parent=“Theme.MaterialComponents.Light.NoActionBar"> ... <item name="toolbarStyle">@style/Widget.MaterialComponents.Toolbar.Primary</item> <item name=“floatingActionButtonStyle”>@style/Widget.Mat...FloatingActionButton</item> ... </style>
<style name="AppTheme" parent=“Theme.MaterialComponents.Light.NoActionBar"> ... <item name="materialCardViewStyle">@style/MyCardView</item> ... </style> <style name="MyCardView"
parent="Widget.MaterialComponents.CardView"> <item name="cardElevation">0dp</item> <item name="strokeColor">?colorPrimaryVariant</item> <item name="strokeWidth">1dp</item> </style>
<style name="AppTheme" parent=“Theme.MaterialComponents.Light.NoActionBar"> ... <item name="materialCardViewStyle">@style/MyCardView</item> ... </style> <style name="MyCardView"
parent="Widget.MaterialComponents.CardView"> <item name="cardElevation">0dp</item> <item name="strokeColor">?colorPrimaryVariant</item> <item name="strokeWidth">1dp</item> </style>
<style name="AppTheme" parent=“Theme.MaterialComponents.Light.NoActionBar"> ... <item name="borderlessButtonStyle">@style/MyButton</item> ... </style> <style name="MyButton"
parent="Widget.MaterialComponents.Button.OutlinedButton"> <item name="shapeAppearance">@style/ButtonShapeAppearance</item> </style> <style name="ButtonShapeAppearance"> <item name="cornerFamilyTopRight">cut</item> <item name="cornerFamilyBottomRight">cut</item> <item name="cornerSize">18dp</item> </style>
<style name="AppTheme" parent=“Theme.MaterialComponents.Light.NoActionBar"> ... <item name="borderlessButtonStyle">@style/MyButton</item> ... </style> <style name="MyButton"
parent="Widget.MaterialComponents.Button.OutlinedButton"> <item name="shapeAppearance">@style/ButtonShapeAppearance</item> </style> <style name="ButtonShapeAppearance"> <item name="cornerFamilyTopRight">cut</item> <item name="cornerFamilyBottomRight">cut</item> <item name="cornerSize">18dp</item> </style>
<style name="AppTheme" parent=“Theme.MaterialComponents.Light.NoActionBar"> ... <item name="shapeAppearanceSmallComponent">@style/MyShapeAppearanceSmall</item> ... </style> <style name="MyShapeAppearanceSmall"
parent=“ShapeAppearance.Mat...SmallComponent”> <item name="cornerFamily">cut</item> <item name="cornerSize">8dp</item> </style>
<style name="AppTheme" parent=“Theme.MaterialComponents.Light.NoActionBar"> ... <item name="shapeAppearanceSmallComponent">@style/MyShapeAppearanceSmall</item> ... </style> <style name="MyShapeAppearanceSmall"
parent=“ShapeAppearance.Mat...SmallComponent”> <item name="cornerFamily">cut</item> <item name="cornerSize">8dp</item> </style>
<style name="AppTheme" parent=“Theme.MaterialComponents.Light.NoActionBar"> ... <item name="shapeAppearanceMediumComponent">@style/MyShapeAppearanceMedium</item> ... </style> <style name="MyShapeAppearanceMedium"
parent=“ShapeAppearance.Mat...MediumComponent"> <item name="cornerFamily">rounded</item> <item name="cornerSize">16dp</item> </style> MaterialAlertDialogBuilder(this) .setTitle("Demo Dialog") .setMessage("Hello world") .setPositiveButton("OK") { _, _ -> } .show()
<style name="AppTheme" parent=“Theme.MaterialComponents.Light.NoActionBar"> ... <item name="shapeAppearanceMediumComponent">@style/MyShapeAppearanceMedium</item> ... </style> <style name="MyShapeAppearanceMedium"
parent=“ShapeAppearance.Mat...MediumComponent"> <item name="cornerFamily">rounded</item> <item name="cornerSize">16dp</item> </style> MaterialAlertDialogBuilder(this) .setTitle("Demo Dialog") .setMessage("Hello world") .setPositiveButton("OK") { _, _ -> } .show()
<style name="AppTheme" parent=“Theme.MaterialComponents.Light.NoActionBar"> ... <item name="shapeAppearanceMediumComponent">@style/MyShapeAppearanceMedium</item> ... </style> <style name="MyShapeAppearanceMedium"
parent=“ShapeAppearance.Mat...MediumComponent"> <item name="cornerFamily">rounded</item> <item name="cornerSize">16dp</item> </style> MaterialAlertDialogBuilder(this) .setTitle("Demo Dialog") .setMessage("Hello world") .setPositiveButton("OK") { _, _ -> } .show()
Docs & tools
material.io - design
material.io - develop
material.io - tools • material theme editor Sketch plugin •
Color tool (outdated) • Gallery (alternative to Zeplin)
Github source • https://github.com/material-components/material- components-android
Questions?