Author: Aerilys

Material Design evolves!

Last week was the Google I/O, the most important event of the year for many developers. Among the many new things announced was the new version Material Design (sometimes called Material Design 2).  It keeps most of the principles of the first version, while refining it and adding much more room for customization, called material theming. Apparently, many people felt too constrained by Material Design, so Google had to do something about it.

 

What’s cool

The new Material Design website is even more complete than before. Seven applications (called Material studies) have been created to showcase the new possibilities of this version, and they are used through the specifications as examples. I really like what’s possible to do, even if I’m pretty sure most of it was already Material-compliant. Overall, most of these apps look great (especially Shrine in my opinion).

Material Study : Shrine App

We also have a bunch of new/changed components, like different types of buttons, FAB, or the bottom app bar. It all makes sense, and again, most of it is mostly refinements over what was already existing.

Great combo of a bottom app bar+FAB

Each component of the guidelines now has details on its design principles, examples from the studies, metrics, and links to the implementation on Android, iOS, Web and Flutter (when available). I like the fact that you have all the information you need on a single page, and don’t have to search the link to technical documentation for your platform.

There are also some new tools for designers if you’re using Sketch. Too bad if you’re on Windows. However, it seems Google has created its own Zeplin-like tool, called Gallery. Give it a try!

Overall, these new possibilites for customization are nice, but maybe it’s too much…

 

What’s less cool (in my opinion)

When Material Design came out, we finally had a way to have consistency across all Android apps. Yes, a lot of apps looked the same, probably because they were not designed by a designer, but by developers who blindly followed the specs. And I think that’s fine.

This new version still allows that level of consistency, but at the same time, you have more room to do whatever you want. That means you can put a toolbar on the top of the screen, or at the bottom, and put the back arrow somewhere on the screen, where you want… You’re not supposed to have two FABs on the same screen, except that actually you can. And you can have menus on the bottom of the screen AND the top. For me that may lead to a lot of confusion for users.

So you can’t have two FABs… Except that you actually can? Sometimes?

 

I guess I would have liked a way for designers to have more room, while still having stronger constraints for developers.

Regarding the Google Tasks app and its iOS look, I’ve found that it doesn’t respect some guidelines of the specs. So I’m going to consider it an experiment, and not a preview of what’s coming next for Google apps.

 

What’s next?

My guess is that we’re going to see some amazing app designs in the coming months, with some designers unleashing their creativity with material design. On the other hand, I’m also pretty sure we’ll end up with more badly designed apps as well, with puzzling behaviors and incoherent screens. Anyway, it’s a very exciting time to work in mobile app development, and I’m going to spend a huge amount of time designing new apps with material theming!

Beyond Material Design

Material Design has been around for a while now. Over the past three years and a half, we’ve seen a tremendous evolution in the way mobile apps are designed. Many communities have been created around this new design language. Even a large number of websites have taken inspiration from it. Google is also making regular changes to the specification, keeping it adapted to current app usage.

 

Why is it so popular?

Google already had a design language for Android before Material Design: Holo. It wasn’t as complete, but still was an excellent start for all app creators. In my opinion, the main difference between these two, what explains why MD is so popular, is how Google is pushing it. Holo was made for Android. MD has been created for all platforms, so now, all Google products users see it, even on iOS. And they talk a lot about it.

 

But now all apps look the same!

Really, do they? The goal of a design language system (DLS) like Material Design is to offer a framework for designers, so they can build their content on a solid foundation. But that’s what MD is, just a foundation. Design goes beyond that.

Now, of course, most developers aren’t designers. That’s a whole different job. And not all of us work with design teams. Devs tend to strictly follow the specifications, and don’t go beyond it. That’s how we end up with a lot of apps which aren’t very imaginative design-wise.

So what? Is that a real issue? I don’t think so. Would you rather go back to the pre-holo time? Before MD, most app developers I knew didn’t use margins for their layout. Now, they do. Developers use cards, FABs, colors!

Do these things are misused? Yes. Do developers, designers and companies sometimes create monsters? Yes. Is MD often mistreated, tortured, deformed? Yes. But again, it’s way better than it was before. Design has made it to the world of app developers. For good.

 

But this kills designers’ creativity!

It can, but I don’t think it happens that often, especially if you’re aware of what a DLS is about. As pointed out in this article from Hayden Bleasel,

“Good design systems are catalysts for consistency, not an immutable list of commandments.”.

I think it’s a pretty good summary. What it brings is a way to help designers building a coherent product experience across features and platforms. Then, designers can use these blocks to build something truly unique, but still consistent. Honestly, just look at all the amazing creations uploaded daily on UpLabs, and look back at Android 2.x apps. Do you think creativity has been killed here?

 

Is Material Design going to be there forever?

Probably not. It’s going to get old at some point, probably sooner than later. But what’s very interesting with MD is that it continues to evolve, while still respecting its core principles. Cards, drawers, FABs, all of this can disappear. As long as the core rules are applied, it’s still Material Design, just like Apple human guidelines are still human guidelines, flat design or not.

Android Makers 2017

Last month I was in Paris for the 1st edition of Android Makers, a brand new conference about mobile apps. Organized by the same guys who made the Droidcon Paris, it was two amazing days of talks about Android, with speakers from all around the world.

I was lucky enough to do a talk about mobile app design, and all the though situations you can meet when you’re creating an app for someone else. Here’s the video (in French):

 

 

You can also read the slides on Slideshare (even if it might not be really complete without the stories told in the talk):

 

And to show you how cool was Android Makers, here’s my top 3 from the conference:

 

 

The Fabulous Journey to Material Design Award by Taylor Ling

In this talk, Taylor Ling explained us the key principles he used to design Fabulous, an extraordinary app that won a Material Design award last year. Probably one of the best talk I’ve seen in years.

 

 

The ART of organizing resources by Jeroen Mols

Here Jeroen Mols explains us the conventions he uses to name his resources. We were nicely surprised to see that we were basically doing the same things at iD.apps. So we’re probably doing it the right way :).

 

 

Android Things for IoT by Wayne Piekarski

Wayne Piekarski from Google was here to show us some of the cool stuff you can do with Android Things. Honestly, watch the talk. Now I want to IOT all the things!

 

In the end it was a great event. I can’t wait to come back next year!

 

 

True Colours, or the quest of comparing two colors

Introduction

I’ve started a few months ago to work on an application called Eternal Minis. It’s a social network where warmongers can share their painted miniatures. If you don’t understand what I’m talking about, check out Wikipedia.

Anyway, the app allows users to add paints they’ve used to a posted minis. It’s a very interesting information if you want to learn how someone has painted a specific color effect. However, it can be a bit tedious to add all the colors you’ve used, especially when there are dozens of them! My idea was to help the user by suggesting the first color. Maybe it’d help him start, and he’ll keep adding other paints after that.

 

Color distance

My first idea was to vectorize the RGB components of a color picked on the photo (using Palette), and then make a distance calculation between this color and the predefined paints included in the app. Even if it may sound like a good idea, a short distance between RGB components might not be really relevant.

So I started to search for some actual color comparison algorithms. What I found is that you can calculate an Euclidian distance between two colors, from actually any format. So you can do the following with RGB components.

An Euclidian formula with 3 dimensions, courtesy of Wikipedia
An Euclidian formula with 3 dimensions, courtesy of Wikipedia

 

However, RGB components, even if they’re great for computers, may not be very relevant for how humans perceive colors. Actually, if you take a look at the Wikipedia article on Color difference, you can read about the work of International Commission on Illumination (CIE). the CIE76 formula for color distance looks like this:

Looks familiar, right?
Looks familiar, right?

You’ll notice that the color components are called L, a and b. It’s because the CIE colors are defined with the Lab color space, which is trying to approximate how humans perceive colors.

So we can easily convert RGB colors to the Lab space, and then use the Euclidian distance to find a relevant color from a mini picture!

 

Make the robots working!

As an Android developer, the good news is: Google has already made all the heavy stuff. The ColorUtils class has a method RGBToLAB (which returns an array with Lab components), and a distanceEuclidian method has well.

So, all you have to do is to pick a color using Palette, and make the comparison with ColorUtils.

What I actually do in Eternal Minis is loop over all vibrant colors in all swatches, and then keep the color with the lowest distance to any paint color included in the app. Then I suggest the user to add the found paint. And here’s the result:

Final result
The final result

 

So what’s next?

The approximation works fairly well, but there are a lot of things to consider outside the color comparison. Photos are often taken with a white or black background, so you don’t want to suggest this color to your user for example. So there is still a lot of work to ease the life of painters!

Google I/O: I was here

Even if I haven’t posted about it (except if you follow me on Twitter), I was at Google I/O this year, thanks to my company. And it was awesome, as you can expect. I’ve met a lot of people, see some great conferences, and I’ve came back with tons of new ideas.

I’m especially pleased with their work on Firebase (except for this annoying push notification bug). And I really want to try Google Home (who wouldn’t?).

Here is the top 5 of the conferences I’ve seen. Enjoy!

You also have to see this one. It’s not your usual I/O conference. You’ll thank me 🙂