Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Material Design 2.0
Search
The Funtasty
February 21, 2019
Technology
200
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
83
Jak jsme redesignovali Kiwi.com appku a snad při tom nikoho nena***li
thefuntasty
0
53
Důležitost brandingu při návrhu webu, aneb jak důležité je poznat ducha značky
thefuntasty
0
66
Live Wallpapers in Processing
thefuntasty
0
84
MVI architektura
thefuntasty
0
290
Other Decks in Technology
See All in Technology
データ_AIの事業の勝敗をわけるもの
nek0128
0
350
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
3k
Gitは怖い?共有ワークスペースから始めるSnowflakeチーム開発
coco_se
0
220
株式会社シーエーシー エンジニア向け会社紹介資料
cac
0
57k
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
160
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
1.9k
MCPをつなげて作る組織横断のAIエージェント基盤(の開発工程)
tsubakimoto_s
0
130
Screen Lens - 今見てる画面を翻訳する
komagata
0
290
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
130
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
3
550
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
800
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
150
Featured
See All Featured
A designer walks into a library…
pauljervisheath
211
25k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
380
Automating Front-end Workflow
addyosmani
1369
210k
Writing Fast Ruby
sferik
630
63k
sira's awesome portfolio website redesign presentation
elsirapls
0
410
Mind Mapping
helmedeiros
1
360
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
520
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
850
Building Applications with DynamoDB
mza
96
7.2k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
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?