Material design basics

38
Material design basics Jorge Juan Barroso Carmona [email protected] @ipper83 +JorgeJBarroso Android expert

Transcript of Material design basics

Page 1: Material design basics

Material design basicsJorge Juan Barroso Carmona

[email protected] @flipper83 +JorgeJBarroso

Android expert

Page 2: Material design basics

We embark on every project with a commitment to create something elegant, enduring and effective. That is our heartbeat.

Our approach is uniquely simple and honest, we are a small dedicated software studio, delivering outstanding work.

Karumi is the Rock Solid code software development studio.

Page 3: Material design basics

A Coherent Cross-platform experience

Page 4: Material design basics

Flexible design system

Page 5: Material design basics

Synthesises classic principles of good design

Page 6: Material design basics

Depth is Important

Page 7: Material design basics

<ImageView … android:elevation = “5dp” android:stateListAnimator = “@anim/pressed_state_list_animator” … />

view.animate().translationZ(…).start();

Page 8: Material design basics

Depth as Reaction

Page 9: Material design basics

<selector xmlns:android=“…”> <item android:state_pressed="true"> <set> <objectAnimator android:propertyName="translationZ" android:duration=“@android:integer/ config_shortAnimTime" android:valueTo="2dp"/> </set> </item> <item android:state_pressed="false"> <set> <objectAnimator … /> </set> </item> </selector>

Page 10: Material design basics

Outline

Page 11: Material design basics

<ImageView … android:background=“@drawable/ my_circle” /> … /> !<shape xmlns:android=“…” android:shape=“circle”> <solid android:color=“#ffE61A58” /> </shape>

Page 12: Material design basics

ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() { @Override public void getOutline(View view, Outline outline) { int size = getResources(). getDimensionPixelSize( R.dimen.fab_size); outline.setOval(0, 0, size, size); } }; !view.setClipToOutline(true); view.setOutlineProvider(viewOutlineProvider);

Page 13: Material design basics

Themes

Page 14: Material design basics

<style name="AppTheme" parent="android:Theme.Material.Light.DarkActionBar"> <item name="android:colorPrimary">@color/primary</item> <item name="android:colorAccent">@color/accent</item> <item name=“android:colorPrimaryDark”> @color/primary_dark</item> </style>

Material

Page 15: Material design basics

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:colorPrimary">@color/primary</item> <item name="android:colorAccent">@color/accent</item> <item name=“android:colorPrimaryDark"> @color/primary_dark</item> </style>

Theme.AppCompat

Page 16: Material design basics

Palette

Page 17: Material design basics

Palette

Dark Muted

Dark Vibrant

Muted

Vibrant

Light Muted

Light Vibrant

Page 18: Material design basics

Palette

dependencies { compile 'com.android.support:palette-v7:21.0.+' } !!Palette p = Palette.generate(bitmap); Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() { public void onGenerated(Palette palette) { // Do something with colors... } });

Page 19: Material design basics

Typography

Page 20: Material design basics

android:TextAppearance.Material.

Page 21: Material design basics

TextAppearance.AppCompat.

Page 22: Material design basics

Cards

Page 23: Material design basics

xmlns:card_view="http://schemas.android.com/apk/res-auto" !!<android.support.v7.widget.CardView android:id="@+id/card_view" android:layout_gravity="center" android:layout_width="200dp" android:layout_height="200dp" card_view:cardCornerRadius="4dp"> </android.support.v7.widget.CardView>

Page 24: Material design basics

Toolbar

Page 25: Material design basics

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); setActionBar(toolbar); !<Toolbar android:id="@+id/my_awesome_toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?android/actionBarSize" android:background="?android/colorPrimary" />

Material

Page 26: Material design basics

Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); setActionBar(toolbar); !<android.support.v7.widget.Toolbar android:id="@+id/my_awesome_toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?actionBarSize" android:background="?colorPrimary" />

App.Compat

Page 27: Material design basics

Activity Transitions

Page 28: Material design basics

Don’t forgetgetWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); ! or !<style name="BaseAppTheme" parent="android:Theme.Material"> <item name= “android:windowContentTransitions"> true </item> </style>

Page 29: Material design basics

Theme transitions<style name="BaseAppTheme" parent=“android:Theme.Material"> <!-- specify enter and exit transitions --> <item name="android:windowEnterTransition">@transition/explode</item> <item name=“android:windowExitTransition”>@transition/explode</item> <!-- specify shared element transitions --> <item name=“android:windowSharedElementEnterTransition"> @transition/change_image_transform</item> <item name=“android:windowSharedElementExitTransition”> @transition/change_image_transform</item> </style>

Page 30: Material design basics

Code transitions// set an exit transition getWindow().setExitTransition(new Explode()); // all the options Window.setEnterTransition() Window.setExitTransition() Window.setSharedElementEnterTransition() Window.setSharedElementExitTransition() // start the Activity startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this). toBundle());

Page 31: Material design basics

Element transitions<ImageView … android:transitionName=“@transition/my_transition” … /> !!ActivityOptions options = ActivityOptions .makeSceneTransitionAnimation(this, androidRobotView, transitionName); startActivity(intent, options.toBundle());

Page 32: Material design basics

Ripples

Page 33: Material design basics

<ripple android:color="?android:colorControlHighlight"> <item> <shape android:shape="oval"> <solid android:color="?android:colorAccent" /> </shape> </item> </ripple>

And set as background

Page 34: Material design basics

Circular Reveal

Page 35: Material design basics

Animator anim = ViewAnimationUtils.createCircularReveal( myView, centerX, centerY, startRadius, finalRadius); anim.start();

Page 36: Material design basics

!

BibliographyThey’re the cracks!

What Material means to Android. David González. Codemotion. 2014 Material Witness. Chet Haase and Romain Guy. Google IO. 2014 Papercraft. Chris Banes and Nick Butcher. Droidcon UK. 2014 http://www.google.com/design

Page 37: Material design basics

!

Find meI am very social!

[email protected] @flipper83 +JorgeJBarroso

Questions?

Page 38: Material design basics

!