[MUSIC PLAYING] JOHNATHAN CHUNG: Hello. Welcome to our talk. My name is Jonathan Chung. And I'm a UX lead on the
Material Design team. NICK BUTCHER: Hello. My name is Nick Butcher. And I'm a designer and engineer
on the Design Relations team. WILL LARCHE: And I'm Will. I'm an engineer on
Material Design. JOHNATHAN CHUNG:
Please have a seat. All right, today. We're really excited
to talk about how to build great Material Design
products across platforms. So to begin, what is
Material Design, given all the new announcements
that we just made? How has it evolved from
what we know before? Material Design is now an
adaptable design system, backed by open source
code, that helps teams create high quality
digital experiences. In other words,
Material helps you to build beautiful and
usable products really fast. In 2014, when we first
launched, we had zero customers. Now we have over 1.5 million
apps using Material Design. That is incredible. And based on this huge
number of customers, we've really listened
and continued to improve our system. So today, we launched Material
Theming, our end-to-end product capability that makes it easy
to make Material Design yours. Now, I'm sure some of you
are very eager to learn more. But maybe some of you
are still wondering if Material Design is
appropriate for you and for your company. So I'm going to start off
by walking through the newly designed Material.io site. Then, Nick will demo our
suite of Material Tools that we built to make
collaboration and customization really easy and effortless. Then, Will is going to talk
about the Material Components, a library of open
source code, that can be used across all platforms. So let me give you three
reasons on why you should really consider using Material Design. First, Materials Design
is also for developers. You've given us
a lot of feedback that it hasn't been easy for
you to apply and build apps using Material Design. Now, with Material Theming,
and all of the tools that we've built to support
this new capability, we're now empowering
desires to create with an eye towards a code
that you will be developing. Material Design is a truly
cross-platform framework. We understand how critical it
is to create a consistent user experience that works
across platforms. So using Material Design
will benefit your users using multiple devices. We also understand that
building high quality products takes a long time. So not only we're encouraging
cross-platform consistency, but also we're
providing the code to start developing on
Android, iOS, web, and Flutter. Now, we're going to
put that to the test. So imagine building
a screen like this. And probably, all of you
are experts and pros, but in my experience,
building a screen like this, and to do it right,
will likely take some time. With the power of
material design, we're now making
it easier than ever to design and build screens
like this across platforms. And all that magic starts right
here with this redesigned site. The new site is now broken into
Design, Develop, and Tools. And in each of
those sections, you will find all of
the great resources that our team has
created for you. Design guidelines,
tools, research insights, open source code, you
name it, it's all there. We're going to spend
some time checking out the site in greater detail now. The Design section still
has everything that you loved about Material Design. It's all there. Nothing is gone. In addition, we're now featuring
some of the most read articles on the top of the page to
help you find content faster. We're still very much
focused on helping you design products
that are beautiful, without background in design. So here, you can
see the articles that we provided for you,
and learn about system icons, generate your own
custom color palette, pick a typeface that
works for your brand, and really harness the
power of shapes in your UI. The last section talks about
materials studies, which we showcase all of the
flexibility of Material Design, regardless if you're
building for retail, for communication,
or even something as complex as a travel app. It's all there. And we've tested it. And it's all there
for you to check out. The Material Design guidance has
also been expanded and enhanced into Material System, Material
Foundation, and Material Guidelines. Starting with the
Material System section, we're giving you the general
overview of Material Metaphors. Then, the Foundation
section dives into the foundational practices. So it'll mention
structural things, like color, typography,
iconography, shape, layout, and more. Now, the Guidelines section
gives tactical guidance on how to create a
material product. And the best thing about this is
that all of these great design guidelines are closely
linked with engineering. Now, let's take a look at
some of the other features on the site that's going
to be helpful for you when you're building
your product. We know how having
a detailed spec makes the engineering
process 10 times faster. And that's why we're
providing this view called Spec Viewer in the articles. In this spec viewer,
we're now exposing all of the useful
information about this image. Clicking through the
menu on the right, you'll have access to all of
the different types of layers about this image, such as you
can just view the image only, see the measurements, text,
color, shape, and elevation, see the different components
that are used in this UI, or even additional notes
that we might have added. Let's take a look at
this text annotation. So in this annotation,
you will not only see the font name,
size, and color, but also link to a Google font
site that our team has built. We really wanted to surface
these kind of useful resources to you in the context
of your workflow, so that everything that
you need is right there. Now, when you navigate
to the Google fonts site, you will be able
to download and use any of the fonts that
are used in our mocks. We also conducted research
on the most effective ways to deliver the guidelines. And we found out that
interactive content increased the level of
understanding for our readers. So we're starting to
introduce content that is interactive in our articles. Here's an example of
material palette generator that is placed in line
in the color article. Through interacting
with this tool, you'll be able to learn about
the improved color system. So those are some of the
new features that we're adding to the design section. But how do you build all this? That's what you're
here for, right? The Develop section now
features and has access to all of the open source for
Android, iOS, web, and Flutter. So while respecting the
platform conventions, we wanted to make sure
that our components works across platforms and
not just on Android. And you'll be able to
play with these components in our catalogs. If you scroll down,
you'll see the section called Developer Resources. So similar to the
Design section, we wanted to provide
the resources that you can use to build your product. And let's say you're not as
familiar with any of this, scroll to the bottom
even more and you'll find tutorials to
get started on this. Switching gears to
the Tools section. So the Tools section has links
to all of the great resources that we built for you,
starting with Gallery, which is a part that I love and have
been using to share designs with my team. I love this product-- Gallery. Gallery makes collaboration
so easy and so seamless. Nick will give you more details
about gallery in a minute. On the right, you
will have access to the five full sets
of stylized icons available in range of
format, sizes, and densities. In the bottom, you will
see the Material Theme Editor for Sketch. What is a Theme Editor? If you haven't heard
from other talks already, the Theme Editor
is a plug-in that lets you express your
brand systematically through elements like
color, iconography, typography, and shape. And through the
Theme Editor, you will be able to take the
themes that we provided for you and customize it
to make it yours. These sets of components
can be used in your designs right away. Also what's great
about the Theme Editor is that all of guidances that
are mentioned in our guidelines is directly integrated
into the tool. Now, what if you want to
change something later on? No problem. Here's an example of choosing
a color from the Interior Color Palette and applying it to the
entire library of components. I find this to be so useful. And this makes my job so easy. Now, I'm going to hand it
off to my colleague, Nick, to talk more in-depth about
using the Theme Editor. Thank you. NICK BUTCHER: Thanks, Johnny. Thank you, Johnny. So we've seen how the
Material System, Foundation, and Guidelines makes it easier
to bring your unique brands into your apps. I'm going to walk you
through an example of how you do this to really
demonstrate how easy it is to do, and especially
show you how the new material tooling makes this
process from design through to development
much faster. So I was part of an
awesome team this year who designed and built
the Google I/O app. Maybe some of you have used it. You may have noticed that
we've put some new componentry in there, like we're using
the bottom app bar here with the inset fab. But we didn't want to use all
of the new Material Theming capabilities, because
we didn't want to spoil the show for
the big launch today. So what we're going to
do today is walk you through some possibilities
of how Material Theming could be applied to bring the brand
of Google I/O much deeper into this application. So Google I/O, it's a
developer conference. We like to think of it as a
developer festival almost. There's a lot of kind of
playfulness in this brand. I especially love
the playfulness in the kind of the motion style. It's also expressed
through the color palette, which you, hopefully, see
everywhere around you. And it also picks up on
metaphors from the software engineering world, things
like layering and stacks. And we use that to inspire
the illustration style, as a kind of mark of the brand. So how can we apply these
elements into the app design? So here I am in Sketch. This is my design file,
generated by the Theme Editor that Johnny just showed you. We can see that Theme Editor
has generated a bunch of stuff for us. It's created a bunch of
components, a typography, scale, color palettes,
elevation settings, and icons, and so on and so forth. If I switch over into
the Components View here, you can see that
there's basically a one-to-one from all the
components in the material guidelines, generated for
me in this sticker sheet here, ready to
use in my designs. There's everything in
here from the app bars to backdrops to fabs to cards. You name it, it's in here. The better thing
about these components is that they're aware of
the Material Theming system. Let me show you
what I mean by that. If I switch back to
the theme and open up the Theme Editor from
the Sketch Plug-ins menu, we can see that this
theme is currently set up using the I/O,
kind of indigo primary, and kind of teal accent color. If I go into the Color
Settings and just by clicking on the Primary
Color section here, and I were to change this
primary color, either by dragging it around or
inputting a hex code directly, it's going to have
a number of effects. Let me walk you through them. The first thing is you notice
this kind of tonal palette. It's generated these 10
different tones of color just from that one color I chose. This is pretty cool. I'm going to geek out
on this little bit. It's not just being naive here. It's not just taking
the hue I selected and altering the
brightness and giving kind of a palette that way,
the algorithm behind this is trying to imitate how
designers pick colors, and it's using that to pick
a nice color palette, which hopefully will work great
throughout your applications. So by selecting
that, you can see that the entire color
palette here in the theme is being updated. And if I switch back to the
components, this sticker sheet, you can see that all
of these elements are aware of that
change in theme color. And that change is rippled
out into all the elements. So you can see app bars pick up
the primary color and a darker tone for the status
bar and so forth, which is pretty powerful. So how do we use this
library we generated? So switching over into
my app design file, this is some screens
from the I/O app, which I designed using those
components in the library that Theme Editor
generated for me. If you haven't used
Sketch's Library feature, it's pretty cool. It's basically a way
to share components between different design
files or amongst your team. It's very powerful. So you access the Library using
the standard Sketch Insert menu. And I scroll down to this
Library, which I generated. And you can see right here,
all of those components that we just saw in the
sticker sheet nicely kind of arranged into this
kind of tree structure. So we can choose the
component that we want, the different
variants of the component, even down to different states
that the component can be in. So if I want to add
a fab to my design, I can just grab
one from the menu and drop it into my design. And over on the
right Inspector pane, you can see it offers
overrides, allowing you to change things, like the
icon, and so on and so forth. So just by generating
through Theme Editor, we've got a huge array of
components available to use. So we understand the
Library it's generated and how to use it
in your design. Let's start customizing
some of these parameters. So I go back into my library,
open up Theme Editor. And one of the first
parameters I think might be interesting for
the I/O brand is shape. I want to take some
inspiration from the I/O logo. You've got I-- this kind of
prominent slash in between. I think we could do something
interesting kind of the surface shape treatment. So by default, in
the baseline, we have this kind of rounded
corner surface shape. I'm going to switch over
to the Angle setting instead, deselect
three of these corners, and then crank up the corner
radius on the top left. So here, I'm trying to take
inspiration from that I/O logo and embed that deeply into
the components in my product. So if I hit Save in the
library and switch over to my design file, Sketch
pops this little purple bar in the corner, letting me know
that the underlying Library has been updated. If I click on this, it's going
to give me a diff almost. These are all the
components that are going to be affected
by these changes. So I can choose whether
to select them or not. I'm just going to take
all these changes. So now, any component which
is aware of the shape system is going to be updated. So if I zoom in on this bottom
sheet here, for example, you can see it picked
up on that cut corner. And likewise, on this
raised button down here, it's shape aware. Some of the components in
the system offer different variants, which can or cannot
pick up on the parameter system. So for example,
here's a fab which is using the standard
circular presentation. But if I go into
the Symbol settings, I can go down to
where I selected and select a
different alternative, if I want it to be aware
of the parameter or not. For example, I can pick up
on a diamond or squircle type shapes, which will pick up on
the different shape parameters. Or I can choose just to keep
it the circular if I want, so it won't pick up
on their parameters. Speaking about variations,
we've introduced a new variance of text fields,
which have been seen to be performing really well,
which we'll come back to soon. So right from my design,
I can go in and select what was the standard kind
of underlying text field, and I can switch it out
to a different variant from those available
in my sticker sheet. So there we go. We've got a different
variant of the text field right there, using this outline,
which is much more obvious. The next parameter I want
to look at is typography. So currently, the I/O
app is using Google Sans, which is Google's
brand's typeface, paired with Roboto for body copy. I think we might be able to
take some inspiration from-- it's a developer event. So I'm going to take some
inspiration from development environments and try
using a monospaced font and see how that works
with the Google brand. If I go into the Typography
settings in the Theme Editor, you can see it's got this scale
in here, which Theme Editor has generated for me, giving me
these kind of semantic styles I can apply
throughout my design. If I select the Google
Sans I had here and search for a monospace, I'm going
to use Roboto Mono on here, one of my favorites, it's
going to swap out everywhere that that other font was used. All the different
places where I'm using a different variant of
Google Sans here, I can go in and I can manually change it. And it's going to do
something interesting. So watch here, you can see
while it's set to Google Sans, it had a particular font
size and tracking and weight. And when I switched it out to a
different font, to Roboto Mono, the font size, tracking, and
weight changed for that style. So what's going on here
is that Theme Editor is pretty smart about fonts. It looks at the
font's characteristics and optically correct
for them in order to create a harmonious scale. So what that means is if
your font you're choosing has a different x
height or stroke weight or something like this,
it'll look at that, and it'll adjust
the sizes it uses for the different
types in the scale in order to produce this
harmonious typescale for you. All just by selecting a font,
it generates a scale for me, which is pretty amazing. So I save that out and switch
back to my app designs. Again, it notifies me that
the Library's been updated. I can take all those changes. And everywhere
throughout my design that I was using the
other font finally before, you can see has been updated to
my new typeface just like that. [APPLAUSE] Go, Theme Editor. So these changes are
looking pretty good to me. I want to share them with
the rest of the team. Using the Material
Plug-in, you can not only get really tight integration
with Theme Editor, but you also get really great
integration with Gallery, our tool for collaborating. So right from the plug-in, I
can choose to upload to Gallery. I can set the project
or the subcollection in which to put it and
upload it straightaway. So once that's upload
it, it's ready to be shared with the team. So I get a unique URL, which
I can share with our team. So in Gallery, I can get
overview of my design work. I can update new
iterations, so I can see how my design work has evolved. I can comment. So you can share
this with people and have a discussion about
different design features. But I'm going to show you one of
my absolute favorite features, which is the Inspect Mode. Now, Inspect Mode makes it
really easy for designers to hand-off off to
developers and for developers to get all the information
that we need out of a design. So when I enable Inspect
Mode, I get this Inspector on the right. And then, when I hover or
select any item in the design, it'll give me spec work. It'll red line it for me
automatically, essentially. So it gives me size,
position information. It gives me the body and the
copy in the selection and all the typeface information. It'll also pick up on any
icons you use from them the Material Themes. So any Material Icons
will link you out to the Material Icon site. So you can grab the
assets that you need and straight away from there. Best of all, Gallery
understands the components that the Theme Editor creates. So if I select this fab here,
it's not just going to say, hey, this is a blue circle. It's going to say, hey, I
recognize that that is a fab. So you can see it picks
up that it's a fab. And best of all, it'll
offer per platform links to reference documentation,
so developers can go directly to the component
that they need to implement. And they'll be
given any parameter changes that you've changed
on the component as well. I can't emphasize this enough. No longer is design handing
over a picture and saying, hey, I really hope you
can implement this. The tight coupling
between the components offered between Theme Editor
and Material Design components mean they're the same
components, which means that you're saying
use this component with these parameter
changes to it. So no longer is it kind
of a guessing game. So these changes
look good to me. I'm going to open up the
Comment feature for @Will. Let him know that
these changes have been uploaded into
gallery, and they're ready for implementation. So over to you, Will. WILL LARCHE: Thanks, Nick. Isn't he great? [APPLAUSE] So I'm an engineer. And Nick has just shared
with me this Gallery project. I've gotten the link. And I click on it. And I get to come in here. And it'll send me to
the Material Components documentation. Now, what is Material
Components or MDC? Material Components are
an open source framework for implementing
Material Design. There is an MDC for Android,
for iOS, web, and Flutter. It's the same code
Google uses in its apps. Each has dozens of
components, and they can all do the cool things that Nick
was talking about earlier. And since they're open
source, there's no mystery. They're not magic boxes. Everything is available to
you to look at or customize. And we invite you to
please contribute code. So let's look at these new text
fields in Material Components. How do I get them? Well, adding MDC to your
code base is pretty easy. If you are an Android, you'll
access the Design Support Library through Maven, using the
standard support Library setup. On web, you'll just
install a node module. On Flutter, you're done. Material Components come
built-in to Flutter. And on iOS, you
can use CocoaPods. You add it to your pod file. Let's look a little
bit closer at iOS and how we implement
the new text fields. So every text field in MDC
iOS has two parts, an input and a controller. We're going to add MDC text
field and an outline controller to our app. We can lay it out using
its intrinsic content size and maybe set the UI
text field delegate. And the placeholder will
float across the border. If you're already using MDC,
upgrading is pretty easy to get these new designs. If you're using
CocoaPods, you just run pod update
MaterialComponents. Then, you go in and change
the controller class from the old class to one of the
new fancy ones, like outlined. And you're done. By the way, these text fields
are much better and much more performant than the
previous designs. We did a huge amount
of research in order to come up with these optimized
designs, a lot of research. And it turns out
that in long forms, your users are much more
likely to see and interact with these text fields
than the previous design. If you want to learn more about
the new text fields or material research, you can watch the talk
"Measuring Material," Thursday at 12:30. So doing this on
iOS is a breeze. But what about Android? Well, you set the outline box
style on the text input layout element in your layout. On web, you just
replace an element with class MDC line ripple,
with an element with class MDC notched outline, with an
SVG with a path of class MDC notched outline path,
and an element of MDC notched outline idle. And don't forget the modifier
class MDC text field outline. It couldn't be simpler. And on Flutter, you change
the border to outline. Now, I'm a little biased
because I work on MDC Flutter. But I think Flutter
is the perfect way to implement material
design across platforms. You do it once, and then you
get both iOS and Android. And MDC is baked right in. It is the default UI
framework for Flutter. And whenever you create a new
project, it's already linked. I love it. So now you know that
the material text fields can be added to your code. But there's a lot more. You can find almost all of the
Material Guidelines components in Material Components. So that's app bars, buttons,
cards, chips, dialogs, navigation, tabs, ink ripples. There are dozens of them now. And they're all available to you
today at Material.io/develop. And since design is never done,
more are added all the time. So today, we've shown
you the design resources available to you
today on Material.io, how Theme Editor, Gallery,
and the Material Tools Suite help you customize your
designs for your brand, and how Material
Components make it easy to implement those
designs across four platforms with precision and ease. So if you are here at
I/O, what else can you do? You can go to our
design dome, where you can get design
reviews and demos and listen to some Box Talks. And you can also go see the talk
"Code Beautiful UI with Flutter and Material Design." We have 30 code labs
for Material Components in the Code Lab. And on Wednesday
at 2:30, there's a session, "Ask
Flutter and Material," where you can come to
us to ask questions about how to implement material
design in your Flutter apps. Thank you. [MUSIC PLAYING]