Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility....

112
Material Design Backwards Compatibility

Transcript of Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility....

Page 1: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Material Design

Backwards Compatibility

Page 2: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

2

• Mobile Development • Android • iOS

• REST-Api Design • Cloud Infrastructure

About Me

+Angelo Rüggeberg

@s3xy4ngyc

http://s3xy4ngyc.github.io

Page 3: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Sample app• Source Available at

Github:https://github.com/s3xy4ngyc/Android-L-Samples

• Available at Google Play:https://play.google.com/store/apps/details?id=s3xy.de.lsamples

3

Page 4: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

4

Page 5: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Distribution

5

Page 6: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Distribution

6

Page 7: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Distribution

• Devices having Android 5.0 officially:

• Nexus 5• Nexus 7• Nexus 9• LG G3

6

Page 8: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Distribution

7

Page 9: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Distribution

7

Page 10: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Dependencies

8

Page 11: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

9

Page 12: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

9

dependencies {

compile 'com.android.support:support-v4:21.0.2'

compile 'com.android.support:appcompat-v7:21.0.2' compile 'com.android.support:cardview-v7:21.0.2' compile 'com.android.support:recyclerview-v7:21.0.2' compile 'com.android.support:gridlayout-v7:21.0.2' compile 'com.android.support:mediarouter-v7:21.0.2' compile 'com.android.support:palette-v7:21.0.2'

compile 'com.android.support:support-v13:21.0.2'

compile 'com.android.support:leanback-v17:21.0.2'

compile 'com.android.support:support-annotations:21.0.2'

}

Page 13: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

9

dependencies {

compile 'com.android.support:support-v4:21.0.2'

compile 'com.android.support:appcompat-v7:21.0.2' compile 'com.android.support:cardview-v7:21.0.2' compile 'com.android.support:recyclerview-v7:21.0.2' compile 'com.android.support:gridlayout-v7:21.0.2' compile 'com.android.support:mediarouter-v7:21.0.2' compile 'com.android.support:palette-v7:21.0.2'

compile 'com.android.support:support-v13:21.0.2'

compile 'com.android.support:leanback-v17:21.0.2'

compile 'com.android.support:support-annotations:21.0.2'

}

dependencies {

compile 'com.android.support:support-v4:21.0.2'

compile ‚com.android.support:appcompat-v7:21.0.2' //material Theme, ActionBar, etc. compile 'com.android.support:cardview-v7:21.0.2' compile 'com.android.support:recyclerview-v7:21.0.2' compile 'com.android.support:gridlayout-v7:21.0.2' compile 'com.android.support:mediarouter-v7:21.0.2' compile 'com.android.support:palette-v7:21.0.2'

compile 'com.android.support:support-v13:21.0.2'

compile 'com.android.support:leanback-v17:21.0.2'

compile 'com.android.support:support-annotations:21.0.2'

}

Page 14: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

9

dependencies {

compile 'com.android.support:support-v4:21.0.2'

compile 'com.android.support:appcompat-v7:21.0.2' compile 'com.android.support:cardview-v7:21.0.2' compile 'com.android.support:recyclerview-v7:21.0.2' compile 'com.android.support:gridlayout-v7:21.0.2' compile 'com.android.support:mediarouter-v7:21.0.2' compile 'com.android.support:palette-v7:21.0.2'

compile 'com.android.support:support-v13:21.0.2'

compile 'com.android.support:leanback-v17:21.0.2'

compile 'com.android.support:support-annotations:21.0.2'

}

dependencies {

compile 'com.android.support:support-v4:21.0.2'

compile ‚com.android.support:appcompat-v7:21.0.2' //material Theme, ActionBar, etc. compile 'com.android.support:cardview-v7:21.0.2' compile 'com.android.support:recyclerview-v7:21.0.2' compile 'com.android.support:gridlayout-v7:21.0.2' compile 'com.android.support:mediarouter-v7:21.0.2' compile 'com.android.support:palette-v7:21.0.2'

compile 'com.android.support:support-v13:21.0.2'

compile 'com.android.support:leanback-v17:21.0.2'

compile 'com.android.support:support-annotations:21.0.2'

}

dependencies {

compile 'com.android.support:support-v4:21.0.2'

compile 'com.android.support:appcompat-v7:21.0.2' compile ‚com.android.support:cardview-v7:21.0.2' //New Components for Pre 5.0 compile 'com.android.support:recyclerview-v7:21.0.2' compile 'com.android.support:gridlayout-v7:21.0.2' compile 'com.android.support:mediarouter-v7:21.0.2' compile 'com.android.support:palette-v7:21.0.2'

compile 'com.android.support:support-v13:21.0.2'

compile 'com.android.support:leanback-v17:21.0.2'

compile 'com.android.support:support-annotations:21.0.2'

}

Page 15: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Apply Material Theme

10

Page 16: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

11

Page 17: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

11

android: Theme.Material

Page 18: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

11

android: Theme.Material

android: Theme.Material.Light

Page 19: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

11

Theme.AppCompat.LightTheme.AppCompat

android: Theme.Material

android: Theme.Material.Light

Page 20: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Apply Material Theme

12

Page 21: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Apply Material Theme

• Custom Style Extending Appcompat Style

12

Page 22: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Apply Material Theme

• Custom Style Extending Appcompat Style• Things to note:

12

Page 23: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Apply Material Theme

• Custom Style Extending Appcompat Style• Things to note:

• No more @android duplicates

12

Page 24: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Apply Material Theme

• Custom Style Extending Appcompat Style• Things to note:

• No more @android duplicates• No more v14+ Style Folder

12

Page 25: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

13

Page 26: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

13

Page 27: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

13

Page 28: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

13

Page 29: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

13

Page 30: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

13

Page 31: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

13

Page 32: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Apply Material Theme

14

Page 33: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Apply Material Theme • Ui Elements that Get Material Design:

• EditText• Spinner• CheckBox• RadioButton• Switch• CheckedTextView

14

Page 34: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Apply Material Theme • Ui Elements that Get Material Design:

• EditText• Spinner• CheckBox• RadioButton• Switch• CheckedTextView

• All Other UI Elements do not get Styled and Need Custom Styling/Views

14

Page 35: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Action Bar Drawer Toggle

15

Page 36: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

16

Action Bar Drawer Toggle

Page 37: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

16

Action Bar Drawer Toggle

Page 38: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Action Bar Drawer Toggle

17

Page 39: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Action Bar Drawer Toggle

• import android.support.v7.app.ActionBarDrawerToggle

• Extend from ActionBarActivity• Init DrawerToggle with Drawer Layout• Assign DrawerToggle to DrawerLayout

17

Page 40: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

18

Page 41: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

18

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

Page 42: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

18

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

Page 43: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

18

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

Page 44: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

18

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

Page 45: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

18

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

DrawerLayout mDrawerLayout; ActionBarDrawerToggle drawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);

drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.app_name, R.string.app_name) { };

mDrawerLayout.setDrawerListener(drawerToggle);

getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); }

Page 46: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Card View

19

Page 47: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Card View

20

Page 48: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Card View

• Support for rounded Corners• Elevation Shadows

20

Page 49: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Card View

• Support for rounded Corners• Elevation Shadows

• Limitations:• On Pre-L no Clipping for Children with

Round Corners• On Pre-L Adds Padding to Draw

Shadows

20

Page 50: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

21

Page 51: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

22

Page 52: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

22

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/cardView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="5dp" android:background="?android:selectableItemBackground" app:cardCornerRadius="2dp" app:cardElevation="5dp" app:cardPreventCornerOverlap="true" app:cardUseCompatPadding="true">

<!-- Place Your Textviews etc. in here --> <LinearLayout...> </android.support.v7.widget.CardView>

Page 53: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Recycler View

23

Page 54: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Recycler View

24

Page 55: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Recycler View

• „Replacement“ for ListView• Implements the ViewHolderPattern• Improved Recycling• LayoutManager

• Vertical List View• Horizontal List View• Staggered Grid View

24

Page 56: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

25

Page 57: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

25

Layout:

Page 58: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

25

Layout:

Page 59: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

25

Layout:

Code:

Page 60: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

25

Layout:

Code:

Page 61: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

26

Page 62: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

27

Recycler View - Adapter

Page 63: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

27

Recycler View - AdapterOld Adapter:class MenuAdapterOld extends ArrayAdapter<String> {

Page 64: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

27

import android.support.v7.widget.RecyclerView;

public class MenuAdapter extends RecyclerView.Adapter<MenuAdapter.ViewHolder> {

Recycler View - AdapterOld Adapter:class MenuAdapterOld extends ArrayAdapter<String> {

New Adapter:

Page 65: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

28

Recycler View - Adapter

Page 66: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

28

private ArrayList<String> mDataset;private OnItemClickListener mListener;public MenuAdapter(ArrayList<String> myDataset, OnItemClickListener listener) { mDataset = myDataset; mListener = listener;}

Recycler View - Adapter

Page 67: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

29

Recycler View - Adapter

Page 68: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

29

private ArrayList<String> mDataset;private OnItemClickListener mListener;public MenuAdapter(ArrayList<String> myDataset, OnItemClickListener listener) { mDataset = myDataset; mListener = listener;}

Recycler View - Adapter

Page 69: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

29

private ArrayList<String> mDataset;private OnItemClickListener mListener;public MenuAdapter(ArrayList<String> myDataset, OnItemClickListener listener) { mDataset = myDataset; mListener = listener;}

Recycler View - Adapter

private ArrayList<String> mDataset;private OnItemClickListener mListener;public MenuAdapter(ArrayList<String> myDataset, OnItemClickListener listener) { mDataset = myDataset; mListener = listener;}

Page 70: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

29

private ArrayList<String> mDataset;private OnItemClickListener mListener;public MenuAdapter(ArrayList<String> myDataset, OnItemClickListener listener) { mDataset = myDataset; mListener = listener;}

Recycler View - Adapter

private ArrayList<String> mDataset;private OnItemClickListener mListener;public MenuAdapter(ArrayList<String> myDataset, OnItemClickListener listener) { mDataset = myDataset; mListener = listener;}

@Overridepublic int getItemCount() { return mDataset.size();}

Page 71: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

30

Recycler View - Adapter

Page 72: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

30

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); }}

Recycler View - Adapter

Page 73: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

30

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); }}

Recycler View - Adapter

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); } }

Page 74: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

30

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); }}

Recycler View - Adapter

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); } }

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); } }

Page 75: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

30

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); }}

Recycler View - Adapter

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); } }

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); } }

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); }}

Page 76: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

30

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); }}

Recycler View - Adapter

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); } }

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); } }

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); }}

public static class ViewHolder extends RecyclerView.ViewHolder { ImageView mPhoto; TextView mPhotoTitle; CardView mCardView; public ViewHolder(View itemView) { super(itemView); mPhoto = (ImageView) itemView.findViewById(R.id.photo); mPhotoTitle = (TextView) itemView.findViewById(R.id.photoTitle); mCardView = (CardView) itemView.findViewById(R.id.cardView); } }

Page 77: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

31

Recycler View - Adapter

Page 78: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

31

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } });}

Recycler View - Adapter

Page 79: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

31

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } });}

Recycler View - Adapter

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } }); }

Page 80: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

31

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } });}

Recycler View - Adapter

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } }); }

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } }); }

Page 81: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

31

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } });}

Recycler View - Adapter

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } }); }

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } }); }

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } }); }

Page 82: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

31

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } });}

Recycler View - Adapter

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } }); }

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } }); }

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } }); }

@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(rowLayout, viewGroup, false); return new ViewHolder(v);}@Overridepublic void onBindViewHolder(final ViewHolder viewHolder, final int i) { Photo p = photos.get(i); mPicasso.load(p.getUrl()).error(android.R.drawable.stat_notify_error).placeholder(android.R.drawable.stat_notify_sync).into(viewHolder.mPhoto); viewHolder.mPhotoTitle.setText(p.getId()); if (viewHolder.mPhotographerTitle != null) { viewHolder.mPhotographerTitle.setText(p.getTitle()); } viewHolder.mCardView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mListener.onClick(viewHolder.mPhoto, i); } });}

Page 83: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

32

Page 84: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

32

• Linear Layout Manager

Page 85: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

32

• Linear Layout Manager

• Supports Smooth Scrolling

Page 86: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

32

• Linear Layout Manager

• Supports Smooth Scrolling

Page 87: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

33

Page 88: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

33

• Linear Layout Manager

Page 89: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

33

• Linear Layout Manager

• Orientation Horizontal

Page 90: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

33

• Linear Layout Manager

• Orientation Horizontal

Page 91: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

34

Page 92: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

34

• Staggered Grid Layout Manager

Page 93: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

34

• Staggered Grid Layout Manager

• Grid Size can be defined

Page 94: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

34

• Staggered Grid Layout Manager

• Grid Size can be defined

• Supports Vertical and Horizontal Scrolling

Page 95: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

34

• Staggered Grid Layout Manager

• Grid Size can be defined

• Supports Vertical and Horizontal Scrolling

Page 96: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Toolbar

35

Page 97: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'
Page 98: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Toolbar

37

Page 99: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Toolbar

• ActionBar == Toolbar

• Toolbar is a ViewGroup• Styleable• Positionable

37

Page 100: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

38

Layout:

Code:

Page 101: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

39

Standalone Widget:

Page 102: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Limitations

40

Page 103: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Limitations

41

Page 104: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Limitations

• Activity Transitions are Possible, BUT won’t be applied on PRE 5.0 Devices

• Many „New“ Ui Elements are not available in the API, thus require separate Implementation/Style.

41

Page 105: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Limitations

42

Page 106: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Limitations

• Elements not Included:• Fancy Material Progressbars• Buttons

• Flat• Raised• Round / Floating

• Sliders• Snackbars

42

Page 107: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Limitations

43

Page 108: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Limitations

• Things not Supported on Pre 5.0:• Activity transitions• Touch feedback• Reveal animations• Path-based animations• Vector drawables• Drawable tinting

43

Page 109: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

44

Useful Links

Page 110: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

Useful Links

• Official Documentation: http://developer.android.com/tools/support-library/index.html

• Index for Open Source Libraries: https://android-arsenal.com/

• e.G. Missing Ui Elements

45

Page 111: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'
Page 112: Material Design - Backwards Compatibility - inovex … · Material Design Backwards Compatibility. 2 ... support-annotations:21.0.2' compile 'com.android.support:support-annotations:21.0.2'

s3xy4ngycs3xy4ngyc

Questions?s3xy4ngyc

AngeloRüggeberg

twitter.com/

google.com/+

.github.iogithub.com/

s3xy4ngycs3xy4ngyc