SlideShare a Scribd company logo
1 of 163
PROGRAMACIÓN MULTIMEDIA
Y
DISPOSITIVOS MÓVILES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
COMENZANDO A
PROGRAMAR
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
MATERIAL DESIGN
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
Presentado durante el Google
I/O 2014, y bajo la autoría del
chileno Matías Duarte.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
A partir de la versión 5.0 de
Android (API 21)
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
dependencies {
…
compile ‘com.android.support:design:22.2.0’
}
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
Google no la quiere aplicar
exclusivamente a dispositivos
móviles, sino que pretende
utilizar material design en todo
tipo de contenidos digitales.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
Es un concepto, una filosofía,
unas pautas enfocadas al
diseño utilizado en Android,
pero también en la web y en
cualquier plataforma.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
Está basado en objetos materiales.
Piezas colocadas en un espacio
(lugar) y con un tiempo
(movimiento) determinado.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
Es un diseño donde la
profundidad, las superficies, los
bordes, las sombras y los colores
juegan un papel principal.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
Aproximándose a la realidad,
guiándose por las leyes de la física,
animaciones lógicas, con objetos
superpuestos pero que no puedan
atravesarse unos a otros.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
CASILLAS BIEN ORDENADAS
COLORES E IMÁGENES LLAMATIVOS
TIPOGRAFÍAS CLARAS
LUCES Y SOMBRAS JERARQUIZADAS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ELEMENTOS DE DISEÑO
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ELEMENTOS: LA SUPERFICIE Y LA LUZ
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ELEMENTOS: COMBINACIONES DE COLOR
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ELEMENTOS: COLORES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
Palette es una librería que permite
extraer colores de una imagen, no
usarse en el hilo principal
ELEMENTOS: PALETTE
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ELEMENTOS: PALETTE
Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() {
@Override
public void onGenerated(Palette palette) {
titulo.setTextColor(palette.getLightVibrantColor(defaultTextColor));
autor.setTextColor(palette.getVibrantColor(defaultTextColor));
}
});
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ELEMENTOS: PALETTE
dependencies {
…
compile ‘com.android.support:palette-v7:22.2.0’
}
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ELEMENTOS: MOVIMIENTO
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ELEMENTOS: ELEVACIÓN
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ELEMENTOS: TRANSICIONES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ELEMENTOS: TRANSICIONES
<android.support.v7.widget.CardView
android:stateListAnimator="@drawable/animacion”
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<set>
<objectAnimator android:propertyName="translationZ"
android:duration="@android:integer/config_shortAnimTime"
android:valueTo="10dp"
android:valueType="floatType"/>
</set>
</item>
<item android:state_pressed="false“ >
<set>
<objectAnimator android:propertyName="translationZ"
android:duration="100"
android:valueTo="2dp"
android:valueType="floatType"/>
</set>
</item>
</selector>
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ELEMENTOS: ELEVACIÓN
<button
android:stateListAnimator=“@anim/fab_animfab”
android:transictionName=“fab”
...//…
Intent in = new Intent (Primera.this, Segunda.class);
ActivityOptions opciones = ActivityOptions.makeSceneTransitionAnimation(
Primera.this, Pair.create(fabButton, "fab"));
startActivity(in, opciones.toBundle());
...//…
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ELEMENTOS: RIPPLES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NUEVAS LIBRERÍAS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATORDRAWVER
RECYCLERVIEW
CARDVIEW
TOOLBAR
ACTION BAR
TABLAYOUT
SNACKBAR
FLOATING ACTION BUTTON
EDITTEXT/TEXTINPUTLAYOUT
NUEVAS LIBRERÍAS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TEXTINPULAYOUT
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TEXTINPUTLAYOUT
textColorHint
colorControlActivated
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TEXTINPUTLAYOUT
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TEXTINPUTLAYOUT
El foco en un campo de texto mueve el
hint hacia la parte superior, haciendo que
el usuario nunca pierda el contexto del
contenido que está escribiendo.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TEXTINPUTLAYOUT
LABEL TEXT
INPUT TEXT
16
16
8
8
72
PADDING ABOVE LABEL TEXT
LABEL HEIGHT
PADDING BELOW INPUT TEXT
PADDING BETWEN TEXT
PADDING BELOW DIVIDER
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TEXTINPUTLAYOUT
LABEL TEXT
INPUT TEXTROBOTO REGULAR 16P
ROBOTO REGULAR 12
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TEXTINPUTLAYOUT: XML
<android.support.design.widget.TextInputLayout
app:counterEnabled="true"
app:counterMaxLength="30"
app:errorEnabled="true">
<EditText
..//..
</android.support.design.widget.TextInputLayout>
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TEXTINPUTLAYOUT: JAVA
import android.support.design.widget.TextInputLayout;
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TEXTINPUTLAYOUT: JAVA
import android.widget.EditText;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Patterns;
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
FLOATING ACTION BUTTONS (FAB)
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
FLOATING ACTION BUTTONS (FAB)
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
FLOATING ACTION BUTTONS (FAB): TAMAÑO
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
FLOATING ACTION BUTTONS (FAB): TAMAÑO
FAB NORMAL
ICONO 24 X 24 DP
CÍRCULO 56 X 65 DP
FAB MINI
ICONO 24 X 24 DP
CÍRCULO 40 X 40 DP
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
FLOATING ACTION BUTTONS (FAB): FEEDBACK
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
FLOATING ACTION BUTTONS (FAB): ICONO
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
FLOATING ACTION BUTTONS (FAB): ICONO
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
FLOATING ACTION BUTTONS (FAB): ASPECTO
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
FLOATING ACTION BUTTONS (FAB): ASPECTO
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
FLOATING ACTION BUTTONS (FAB): ASPECTO
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
FLOATING ACTION BUTTONS (FAB): USO
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
FLOATING ACTION BUTTONS (FAB): MORPHING
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
FLOATING ACTION BUTTONS (FAB): PANTALLA COMPLETA
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
FLOATING ACTION BUTTONS (FAB): PANTALLA GRANDE
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
dependencies {
…
compile ‘com.android.support:design:22.2.0’
}
FLOATING ACTION BUTTONS (FAB)
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
import android.support.design.widget.FloatingActionButton;
FLOATING ACTION BUTTONS (FAB)
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
<android.support.design.widget.FloatingActionButton
android:id="@+id/miboton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_bot"
app:fabSize="normal"
app:borderWidth="0dp" />
FLOATING ACTION BUTTONS (FAB)
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SNACKBAR
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SNACKBAR
Muestra feedback sobre alguna operación
realizada por el usuario, y es similar a un
toast ya que aparece en pantalla por un
corto periodo de tiempo y después
desaparece automáticamente.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SNACKBAR
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
APARECE DESDE EL INFERIOR DE LA PANTALLA
SOLO PUEDE MOSTRARSE UN AL MISMO TIEMPO
DEBE MOSTRAR MENSAJES CORTOS
PUEDE DESCARTARSE HACIA UN LATERAL
SNACKBAR
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SNACKBAR
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SNACKBAR: MEDIDAS EN MÓVIL
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SNACKBAR: MEDIDAS EN TABLET
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SNACKBAR
import android.support.design.widget.Snackbar;
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
CONTEXTO/VISTA
TEXTO
Snackbar.make()
DURACCIÓN
SNACKBAR: CONSTRUCCIÓN
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SNACKBAR: CONSTRUCCIÓN
Snackbar.make(view, “TEXTO A MOSTRAR", Snackbar.LENGTH_LONG)
.setAction(“BOTON", new View.OnClickListener() {
@Override
public void onClick(View view) {
CÓDIGO RESPUESTA
}
})
.show();
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SNACKBAR
<item name="colorAccent">@color/accentColor</item>
SNACKBAR: CONSTRUCCIÓN
ESTILOS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SNACKBAR: CONSTRUCCIÓN
ESTILOS
Snackbar.make(view, “TEXTO A MOSTRAR", Snackbar.LENGTH_LONG)
.setActionTextColor(getResources().getColor(R.color.snackbar_action))
View snackBarView = snackbar.getView();
snackBarView.setBackgroundColor(getResources().getColor(R.color.snackbar_background));
TextView tv = (TextView) snackBarView.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(getResources().getColor(R.color.snackbar_message));
.setAction(“BOTON", new View.OnClickListener() {
@Override
public void onClick(View view) {
CÓDIGO RESPUESTA
}
})
.show();
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SNACKBAR: CONSTRUCCIÓN
ESTILOS
<android.support.design.widget.CoordinatorLayout
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TABLAYOUT
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:22.2.0‘
}
TABS: BUILDS GRANDLE
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TABS CON MATERIAL DESIGN
<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="scrollable" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="@android:color/white" />
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TABS CON MATERIAL DESIGN
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tabs05);
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setAdapter(new Adaptador(getSupportFragmentManager(),
Tabs05.this));
TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
tabLayout.setupWithViewPager(viewPager);
}
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TABS CON MATERIAL DESIGN: ESTILOS
MANIFEST
TEMA
STYLES
COLOR
DIMENS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TABS CON MATERIAL DESIGN: TABS CON TOOLBAR
<android.support.design.widget.CoordinatorLayout
CODIGO
<android.support.design.widget.AppBarLayout
CODIGO
<android.support.v7.widget.Toolbar
CODIGO
<android.support.design.widget.TabLayout
CODIGO
</android.support.design.widget.AppBarLayout>
CODIGO
<android.support.v4.view.ViewPager
CODIGO
</android.support.design.widget.CoordinatorLayout>
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ACTION BAR CON TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
IMPLEMENTAMOS EL VIEWPAGER
AGREGAMOS LA TABLAYOUT
IMPLEMENTAMOS LA TOOLBAR
AGREGAMOS EL COORDINATORLAYOUT
IMPLEMENTAMOS LA APPBAR
PERSONALIZAMOS EL TEMA
ACTION BAR CON TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ACTION BAR CON TABS
<android.support.design.widget.CoordinatorLayout
CÓDIGO
<android.support.design.widget.AppBarLayout>
CÓDIGO
<android.support.v7.widget.Toolbar>
CÓDIGO
<android.support.design.widget.TabLayout>
CÓDIGO
</android.support.design.widget.AppBarLayout>
CÓDIGO
<android.support.v4.view.ViewPager>
CÓDIGO
</android.support.design.widget.CoordinatorLayout>
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
CREAMOS EL ADAPTADOR
ACTION BAR CON TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ACTION BAR CON TABS
public class Adaptador extends FragmentPagerAdapter {
public Adaptador(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return null;
}
@Override
public CharSequence getPageTitle(int position) {
return null;
}
@Override
public int getCount() {
return 0;
}
}
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
MODIFICAMOS EL CONSTRUCTOR
ACTION BAR CON TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ACTION BAR CON TABS
public class Adaptador extends FragmentPagerAdapter {
int numeroDeSeciones
public Adaptador(FragmentManager fm, int numeroDeSeciones) {
super(fm);
this. numeroDeSeciones = numeroDeSeciones
}
..//..
@Override
public int getCount() {
return numeroDeSeciones;
}
}
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
MODIFICAMOS EL MÉTODO getItem()
ACTION BAR CON TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ACTION BAR CON TABS
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new Fragmento1();
case 1:
return new Fragmento2();
case 2:
return new Fragmento3();
default:
return null;
}
}
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
MODIFICAMOS EL MÉTODO getPageTitle()
ACTION BAR CON TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ACTION BAR CON TABS
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return new “TAB 1”;
case 1:
return new “TAB 2“ ;
case 2:
return new “TAB 3”;
default:
return null;
}
}
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SE CREA LA VISTA DE LOS FRAGMENTOS
SE CREA EL JAVA DE LOS FRAGMENTOS
ACTION BAR CON TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SE GESTIONA EL INFLADO DEL MENÚ
SE CREA EL JAVA PRINCIPAL
ACTION BAR CON TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ACTION BAR CON TABS
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_actionbar03, menu);
return true;
}
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SE INICIA LA TOOLBAR
ACTION BAR CON TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ACTION BAR CON TABS
Toolbar toolbar = (Toolbar) findViewById(R.id.Toolbar);
setSupportActionBar(toolbar);
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SE INICIA AÑADEN PESTAÑAS
SE CONFIGURA EL TABLAYOUT
SE INICIA EL TABLAYOUT
ACTION BAR CON TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ACTION BAR CON TABS
TabLayout tabLayout = (TabLayout)
findViewById(R.id.TabLayout);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setTabMode(TabLayout.MODE_FIXED);
tabLayout.addTab(tabLayout.newTab());
tabLayout.addTab(tabLayout.newTab());
tabLayout.addTab(tabLayout.newTab());
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
VINCULAMOS ADAPTADOR Y VIEWPAGER
INICIALIZAMOS ADAPTADOR
SE INICIA EL VIEWPAGER
ACTION BAR CON TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ACTION BAR CON TABS
private Adaptador Adaptador;
private ViewPager ViewPager;
@Override
protected void onCreate(Bundle savedInstanceState)
ViewPager = (ViewPager) findViewById(R.id.ViewPager);
Adaptador = new Adaptador(getSupportFragmentManager(),
tabLayout.getTabCount());
ViewPager.setAdapter(Adaptador);
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
AÑADIMOS EL CAPTURADOR DE EVENTOS
ACTION BAR CON TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ACTION BAR CON TABS
tabLayout.setupWithViewPager(ViewPager);
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TOOLBAR
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
TOOLBAR
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="@dimen/elevation"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
tools:ignore="UnusedAttribute"/>
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
SE INICIA LA TOOLBAR
ACTION BAR CON TABS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
ACTION BAR CON TABS
Toolbar toolbar = (Toolbar) findViewById(R.id.Toolbar);
setSupportActionBar(toolbar);
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATORDRAWVER
RECYCLERVIEW
CARDVIEW
SNACKBAR
EDITTEXT/TEXTINPUTLAYOUT
NUEVAS LIBRERÍAS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
CARDVIEW
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
CARDVIEW
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
CARDVIEW
NIVELES EN PANTALLA
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
CARDVIEW
dependencies {
…
compile ‘com.android.support:cardview-v7:22.2.0’
}
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
CARDVIEW: XML
<android.support.V7.widget.CardView
card_view:cardCornerRadius="4dp"
card_view:cardElevation="4dp"
card_view:cardUseCompatPadding="true">
<Relativelayout
..//..
</android.support. V7.widget.CardView>
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
contentPadding
cardUseCompatPadding
cardPreventCornerOverlap
cardMaxElevation
cardElevation
cardCornerRadius
CARDVIEW: XML
cardBackgroundColor
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECYCLERVIEW
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW
Es una clase que hereda de ViewGroup
que permite mostrar grandes
colecciones o conjuntos de datos pero
solo se dedica a reciclar vistas, otros
componentes serán responsables de
acceder a los datos y mostrarlos.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW
RecyclerView necesita del método
setLayoutManager(LayoutManager
layout) para asignar un tipo de layout que
le indique cómo debe renderizar, dando
origen a un patrón por composición.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
StaggeredGridLayoutManager
RECICLERVIEW: TIPOS DE LAYOUTMANAGER
GridLayoutManager
LinearLayoutManager
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: TIPOS DE LAYOUTMANAGER
LinearLayoutManager
LinearLayoutManager linearLayoutManager = new
LinearLayoutManager( this,
LinearLayoutManager.VERTICAL, false);
LinearLayoutManager
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: TIPOS DE LAYOUTMANAGER
LinearLayoutManager – LISTAS HORIZONTALES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: TIPOS DE LAYOUTMANAGER
GridLayoutManager
GridLayoutManager gridLayoutManager = new
GridLayoutManager ( this, 2,
GridLayoutManager.VERTICAL, false);
GridLayoutManager
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: TIPOS DE LAYOUTMANAGER
GridLayoutManager - VISTAS RESPONSIVAS
final int columnas=
getResources().getInteger(R.integer. columnas);
GridLayoutManager gridLayoutManager = new
GridLayoutManager ( this, columnas,
GridLayoutManager.VERTICAL, false);
GridLayoutManager
<integer name=“columnas">1</integer>
<integer name=“columnas">2</integer>
VALUES
VALUES LARGOS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: TIPOS DE LAYOUTMANAGER
GridLayoutManager + SpanSizeLookup
Usando el metodo
setSpanSizeLookup(SpanSize
Lookup spanSizeLookup)
establecemos la cantidad de
spans que debe ocupar cada
elemento en el adaptador.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: TIPOS DE LAYOUTMANAGER
GridLayoutManager + SpanSizeLookup
gridLayoutManager.setSpanSizeLookup(new
GridLayoutManager.SpanSizeLookup()
@Override
public int getSpanSize(int position) {
int index = postion % 5;
switch(index){
case 0: return 1;
case 1: return 2;
case 2: return 1;
}
});
GridLayoutManager
SpanSizeLookup
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: TIPOS DE LAYOUTMANAGER
StaggeredGridLayoutManager
StaggeredGridLayoutManager staggeredGridLayoutManager
= new GridLayoutManager ( this, 2,
GridLayoutManager.VERTICAL, false);
staggeredGridLayoutManager.setGapStrategy(StaggeredGridL
ayoutManager.GAP_HANDLING_NONE);
StaggeredGridLayoutManager
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW
RecyclerView nos brinda un nuevo
componente de nombre Recycler una
clase encargada de gestionar si una vista
será (desechada o separada) scrapped or
detached para su reutilización.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW
LAYOUTMANAGER RECYCLER
ADAPTADOR
OBTIENE LA VISTA
RECICLA LA VISTA
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW
Si un vista es scrapped indica que continúa
enlazada con el RecyclerView pero se ha
marcado para su posible eliminación o
reutilización. Cuando es reutilizada es
considerada dirty y el adaptador es quien debe
volver a enlazarla antes de ser mostrada.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW
RECYLER POOL
SCRAP HEAP
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: SCRAP HEAP
Es donde podemos interactuar con las vistas que
no estás utilizando en el momento pero vas a
volver a utilizar de forma inmediata, se consigue
mediante el método detachAndScrapView(View
child, Recycler recycler)
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: RECYCLER POOL
Es donde encuentran las vistas que no
necesitamos más y utilizando el método
removeAndRecycleView(View child, Recycler
recycler) removemos las vistas.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: XML
<android.support.v7.widget.RecyclerView
android:id="@+id/reciclador"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="3dp"
android:scrollbars="vertical"
android:background="@color/colorDivider"/>
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: JAVA
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
DECLARA ELEMENTOS DE ARQUITECTURA
RECICLERVIEW: JAVA
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: JAVA
private RecyclerView recycler;
private RecyclerView.Adapter adapter;
private RecyclerView.LayoutManager lManager;
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
OBTIENE Y CONFIGURA EL RECYCLER
RECICLERVIEW: JAVA
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: JAVA
recycler = (RecyclerView) findViewById(R.id.reciclador);
recycler.setHasFixedSize(true);
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
UTILIZA EL ADMINISTRADOR PARA LINEARLAYOUT
RECICLERVIEW: JAVA
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: JAVA
lManager = new LinearLayoutManager(this);
recycler.setLayoutManager(lManager);
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
CREAMOS UN NUEVO ADAPTADOR
RECICLERVIEW: JAVA
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: JAVA
adapter = new Adaptador(datos);
recycler.setAdapter(adapter);
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: ADAPTADOR.JAVA
public class Adaptador extends RecyclerView.Adapter<Adaptador.AnimeViewHolder> {
private List<Encapsulador> items;
public static class AnimeViewHolder extends RecyclerView.ViewHolder {
--- ITEMS---
}
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RECICLERVIEW: ADAPTADOR.JAVA
MÉTODOS
onBindViewHolder
onCreateViewHolder
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATORDRAWER
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER
Es un nuevo interfaz de usuario en forma de un
panel lateral que puede contener el menú
principal u otras opciones de navegación de la
App, y que permanece oculto por defecto.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: APERTURA
DESLIZAMIENTO DESDE EL BORDE IZQUIERDO
TOCANDO EL ICONO DE LA APLICACIÓN
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
PRESIONANDO EL BOTÓN ATRÁS
TOCANDO EL CONTENIDO FUERA DEL NAVIGATION
NAVIGATION DRAWER: CIERRE
DESLIZAMIENTO HACIA EL BORDE IZQUIERDO
TOCANDO EL ICONO DE LA APLICACIÓN
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: NAVEGACIÓN CRUZADA
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: NAVEGACIÓN PROFUNDA
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: NAVEGACIÓN EN ÁRBOL
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: ELEMENTOS
ELEMENTOS PLEGABLES
CONTADORES
ICONOS
TÍTULOS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: ELEMENTOS
TÍTULOS – ICONOS - CONTADORES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: ELEMENTOS
ELEMENTOS PLEGABLES
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: ELEMENTOS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: ELEMENTOS
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: XML
<android.support.v4.widget.DrawerLayout
<include layout="@layout/contenido" />
<android.support.design.widget.NavigationView
android:id="@+id/navigation“
app:headerLayout="@layout/cabecera"
app:menu="@menu/menu_navegacion" />
</android.support.v4.widget.DrawerLayout>
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: DRAWERLAYOUT
Un DrawerLayout es un contenedor especial de
la librería de soporte, que alberga dos tipos de
contenido, el contenido principal y el
contenido para el Navigation Drawer.
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: JAVA
SE REFERENCIA EL NAVIGATION DRAWER
SE DECLARA EL NAVIGATION DRAWER
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: JAVA
private DrawerLayout drawerLayout;
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: JAVA
SE CREA UN ESCUCHADOR AL NAVIGATION DRAWER
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: JAVA
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
menuItem.setChecked(true);
..//..
return true;
}
}
);
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: CIRCLEIMAGEVIEW
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
dependencies {
…
compile 'de.hdodenhof:circleimageview:1.3.0'
}
NAVIGATION DRAWER: CIRCLEIMAGEVIEW
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
NAVIGATION DRAWER: CIRCLEIMAGEVIEW
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/circle_image"
android:layout_width=“20dp"
android:layout_height=“20dp"
android:layout_marginBottom="16dp"
android:scaleType="centerCrop"
android:src="@drawable/imagen"
app:border_color="@android:color/white"
app:border_width="1dp" />
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
RecyclerView Y CustomView
RecyclerView.ItemAnimator
RecyclerView.ItemDecoration
ACTIVIDAD DE INVESTIGACIÓN
ESTILO DE LAS ETIQUETAS EN TEXTINPULAYOUT
PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES
MATERIAL DESIGN
© J.D.CABRERA
PROGRAMACIÓN MULTIMEDIA
Y
DISPOSITIVOS MÓVILES
DISPOSITIVOS MÓVILES: MATERIAL DESIGN II

More Related Content

What's hot (7)

DISPOSITIVOS MÓVILES: BLOQUE 3
DISPOSITIVOS MÓVILES: BLOQUE 3DISPOSITIVOS MÓVILES: BLOQUE 3
DISPOSITIVOS MÓVILES: BLOQUE 3
 
DISPOSITIVOS MÓVILES: BLOQUE 8
DISPOSITIVOS MÓVILES: BLOQUE 8DISPOSITIVOS MÓVILES: BLOQUE 8
DISPOSITIVOS MÓVILES: BLOQUE 8
 
DISPOSITIVOS MÓVILES: ACTION BAR - TOOLBAR
DISPOSITIVOS MÓVILES: ACTION BAR - TOOLBARDISPOSITIVOS MÓVILES: ACTION BAR - TOOLBAR
DISPOSITIVOS MÓVILES: ACTION BAR - TOOLBAR
 
DISPOSITIVOS MÓVILES: BLOQUE 11
DISPOSITIVOS MÓVILES: BLOQUE 11DISPOSITIVOS MÓVILES: BLOQUE 11
DISPOSITIVOS MÓVILES: BLOQUE 11
 
DISPOSITIVOS MÓVILES: BLOQUE 10
DISPOSITIVOS MÓVILES: BLOQUE 10DISPOSITIVOS MÓVILES: BLOQUE 10
DISPOSITIVOS MÓVILES: BLOQUE 10
 
DISPOSITIVOS MÓVILES: MATERIAL DESIGN
DISPOSITIVOS MÓVILES: MATERIAL DESIGNDISPOSITIVOS MÓVILES: MATERIAL DESIGN
DISPOSITIVOS MÓVILES: MATERIAL DESIGN
 
DISPOSITIVOS MÓVILES: BLOQUE 7
DISPOSITIVOS MÓVILES: BLOQUE 7DISPOSITIVOS MÓVILES: BLOQUE 7
DISPOSITIVOS MÓVILES: BLOQUE 7
 

Similar to DISPOSITIVOS MÓVILES: MATERIAL DESIGN II

PROGRAMACIÓN ANDROID: MULTIMEDIA - LAS IMÁGENES
PROGRAMACIÓN ANDROID: MULTIMEDIA - LAS IMÁGENESPROGRAMACIÓN ANDROID: MULTIMEDIA - LAS IMÁGENES
PROGRAMACIÓN ANDROID: MULTIMEDIA - LAS IMÁGENESJacinto Cabrera Rodríguez
 
ESTRUCTURA DE UN PROYECTO EN ANDROID STUDIO 2.2
ESTRUCTURA DE UN PROYECTO EN ANDROID STUDIO 2.2ESTRUCTURA DE UN PROYECTO EN ANDROID STUDIO 2.2
ESTRUCTURA DE UN PROYECTO EN ANDROID STUDIO 2.2Jacinto Cabrera Rodríguez
 
DISPOSITIVOS MÓVILES: INTENT Y COMUNICACIONES
DISPOSITIVOS MÓVILES: INTENT Y COMUNICACIONESDISPOSITIVOS MÓVILES: INTENT Y COMUNICACIONES
DISPOSITIVOS MÓVILES: INTENT Y COMUNICACIONESJacinto Cabrera Rodríguez
 
PROGRAMACIÓN ANDROID: MULTIMEDIA - LOS GRÁFICOS
PROGRAMACIÓN ANDROID: MULTIMEDIA - LOS GRÁFICOSPROGRAMACIÓN ANDROID: MULTIMEDIA - LOS GRÁFICOS
PROGRAMACIÓN ANDROID: MULTIMEDIA - LOS GRÁFICOSJacinto Cabrera Rodríguez
 
ENTORNOS DE DESARROLLO: ANDROID STUDIO - ESTRUCTURA
ENTORNOS DE DESARROLLO: ANDROID STUDIO - ESTRUCTURA ENTORNOS DE DESARROLLO: ANDROID STUDIO - ESTRUCTURA
ENTORNOS DE DESARROLLO: ANDROID STUDIO - ESTRUCTURA Jacinto Cabrera Rodríguez
 
PROGRAMACIÓN ANDROID: MULTIMEDIA - LOS SONIDOS Y EL VIDEO
PROGRAMACIÓN ANDROID: MULTIMEDIA - LOS SONIDOS Y EL VIDEOPROGRAMACIÓN ANDROID: MULTIMEDIA - LOS SONIDOS Y EL VIDEO
PROGRAMACIÓN ANDROID: MULTIMEDIA - LOS SONIDOS Y EL VIDEOJacinto Cabrera Rodríguez
 
DISPOSITIVOS MÓVILES: PRESENTACIÓN DEL MÓDULO
DISPOSITIVOS MÓVILES: PRESENTACIÓN DEL MÓDULODISPOSITIVOS MÓVILES: PRESENTACIÓN DEL MÓDULO
DISPOSITIVOS MÓVILES: PRESENTACIÓN DEL MÓDULOJacinto Cabrera Rodríguez
 
archivodiapositiva_2022720173336.pdf
archivodiapositiva_2022720173336.pdfarchivodiapositiva_2022720173336.pdf
archivodiapositiva_2022720173336.pdfjoselyntigre1
 

Similar to DISPOSITIVOS MÓVILES: MATERIAL DESIGN II (20)

PROGRAMACIÓN ANDROID: MULTIMEDIA - LAS IMÁGENES
PROGRAMACIÓN ANDROID: MULTIMEDIA - LAS IMÁGENESPROGRAMACIÓN ANDROID: MULTIMEDIA - LAS IMÁGENES
PROGRAMACIÓN ANDROID: MULTIMEDIA - LAS IMÁGENES
 
ESTRUCTURA DE UN PROYECTO EN ANDROID STUDIO
ESTRUCTURA DE UN PROYECTO EN ANDROID STUDIOESTRUCTURA DE UN PROYECTO EN ANDROID STUDIO
ESTRUCTURA DE UN PROYECTO EN ANDROID STUDIO
 
DISPOSITIVOS MÓVILES: CONTROLES BÁSICOS
DISPOSITIVOS MÓVILES: CONTROLES BÁSICOSDISPOSITIVOS MÓVILES: CONTROLES BÁSICOS
DISPOSITIVOS MÓVILES: CONTROLES BÁSICOS
 
ESTRUCTURA DE UN PROYECTO EN ANDROID STUDIO 2.2
ESTRUCTURA DE UN PROYECTO EN ANDROID STUDIO 2.2ESTRUCTURA DE UN PROYECTO EN ANDROID STUDIO 2.2
ESTRUCTURA DE UN PROYECTO EN ANDROID STUDIO 2.2
 
DISPOSITIVOS MÓVILES: GIT - GITHUB
DISPOSITIVOS MÓVILES: GIT - GITHUBDISPOSITIVOS MÓVILES: GIT - GITHUB
DISPOSITIVOS MÓVILES: GIT - GITHUB
 
ANDROID; CONTROL DE VERSIONES
ANDROID; CONTROL DE VERSIONESANDROID; CONTROL DE VERSIONES
ANDROID; CONTROL DE VERSIONES
 
PROGRAMACIÓN ANDROID: MULTIMEDIA - EL VIDEO
PROGRAMACIÓN ANDROID: MULTIMEDIA - EL VIDEOPROGRAMACIÓN ANDROID: MULTIMEDIA - EL VIDEO
PROGRAMACIÓN ANDROID: MULTIMEDIA - EL VIDEO
 
DISPOSITIVOS MÓVILES: INTENT Y COMUNICACIONES
DISPOSITIVOS MÓVILES: INTENT Y COMUNICACIONESDISPOSITIVOS MÓVILES: INTENT Y COMUNICACIONES
DISPOSITIVOS MÓVILES: INTENT Y COMUNICACIONES
 
INSTALACIÓN ANDROID STUDIO 1
INSTALACIÓN ANDROID STUDIO 1INSTALACIÓN ANDROID STUDIO 1
INSTALACIÓN ANDROID STUDIO 1
 
INSTALACIÓN ANDROID STUDIO 2
INSTALACIÓN ANDROID STUDIO 2INSTALACIÓN ANDROID STUDIO 2
INSTALACIÓN ANDROID STUDIO 2
 
ANDROID: FUNDAMENTOS DE UNA APLICACIÓN
ANDROID: FUNDAMENTOS DE UNA APLICACIÓNANDROID: FUNDAMENTOS DE UNA APLICACIÓN
ANDROID: FUNDAMENTOS DE UNA APLICACIÓN
 
ANDROID: CONFIGURAR ADB
ANDROID: CONFIGURAR ADBANDROID: CONFIGURAR ADB
ANDROID: CONFIGURAR ADB
 
PROGRAMACIÓN ANDROID: MULTIMEDIA - LOS GRÁFICOS
PROGRAMACIÓN ANDROID: MULTIMEDIA - LOS GRÁFICOSPROGRAMACIÓN ANDROID: MULTIMEDIA - LOS GRÁFICOS
PROGRAMACIÓN ANDROID: MULTIMEDIA - LOS GRÁFICOS
 
ENTORNOS DE DESARROLLO: ANDROID STUDIO - ESTRUCTURA
ENTORNOS DE DESARROLLO: ANDROID STUDIO - ESTRUCTURA ENTORNOS DE DESARROLLO: ANDROID STUDIO - ESTRUCTURA
ENTORNOS DE DESARROLLO: ANDROID STUDIO - ESTRUCTURA
 
PROGRAMACIÓN ANDROID: MULTIMEDIA - LOS SONIDOS Y EL VIDEO
PROGRAMACIÓN ANDROID: MULTIMEDIA - LOS SONIDOS Y EL VIDEOPROGRAMACIÓN ANDROID: MULTIMEDIA - LOS SONIDOS Y EL VIDEO
PROGRAMACIÓN ANDROID: MULTIMEDIA - LOS SONIDOS Y EL VIDEO
 
DISPOSITIVOS MÓVILES: CONTROLES DE BOTÓN
DISPOSITIVOS MÓVILES: CONTROLES DE BOTÓNDISPOSITIVOS MÓVILES: CONTROLES DE BOTÓN
DISPOSITIVOS MÓVILES: CONTROLES DE BOTÓN
 
DISPOSITIVOS MÓVILES: PRESENTACIÓN DEL MÓDULO
DISPOSITIVOS MÓVILES: PRESENTACIÓN DEL MÓDULODISPOSITIVOS MÓVILES: PRESENTACIÓN DEL MÓDULO
DISPOSITIVOS MÓVILES: PRESENTACIÓN DEL MÓDULO
 
5pensamiento.pdf
5pensamiento.pdf5pensamiento.pdf
5pensamiento.pdf
 
archivodiapositiva_2022720173336.pdf
archivodiapositiva_2022720173336.pdfarchivodiapositiva_2022720173336.pdf
archivodiapositiva_2022720173336.pdf
 
DISPOSITIVOS MÓVILES: MENÚS Y SUBMMENÚS
DISPOSITIVOS MÓVILES: MENÚS Y SUBMMENÚSDISPOSITIVOS MÓVILES: MENÚS Y SUBMMENÚS
DISPOSITIVOS MÓVILES: MENÚS Y SUBMMENÚS
 

More from Jacinto Cabrera Rodríguez

DISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONES
DISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONESDISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONES
DISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONESJacinto Cabrera Rodríguez
 

More from Jacinto Cabrera Rodríguez (20)

REDES: DUCTUS Y CANALETAS II
REDES: DUCTUS Y CANALETAS IIREDES: DUCTUS Y CANALETAS II
REDES: DUCTUS Y CANALETAS II
 
OTRAS UNIDADES DE ALMACENAMIENTO
OTRAS UNIDADES DE ALMACENAMIENTOOTRAS UNIDADES DE ALMACENAMIENTO
OTRAS UNIDADES DE ALMACENAMIENTO
 
DISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONES
DISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONESDISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONES
DISPOSITIVOS MÓVILES: DIÁLOGOS Y NOTIFICACIONES
 
LAS FUENTES EN LA HISTORIA DEL ARTE
LAS FUENTES EN LA HISTORIA DEL ARTELAS FUENTES EN LA HISTORIA DEL ARTE
LAS FUENTES EN LA HISTORIA DEL ARTE
 
TOULOUSE LAUTREC
TOULOUSE LAUTRECTOULOUSE LAUTREC
TOULOUSE LAUTREC
 
PRÁCTICA MANEJO DE MEMORIA
PRÁCTICA MANEJO DE MEMORIAPRÁCTICA MANEJO DE MEMORIA
PRÁCTICA MANEJO DE MEMORIA
 
ZÓCALOS DE TARJETAS
ZÓCALOS DE TARJETASZÓCALOS DE TARJETAS
ZÓCALOS DE TARJETAS
 
ZÓCALOS DE PROCESADOR
ZÓCALOS DE PROCESADORZÓCALOS DE PROCESADOR
ZÓCALOS DE PROCESADOR
 
TIPOS DE MÓDULOS DE MEMORIA
TIPOS DE MÓDULOS DE MEMORIATIPOS DE MÓDULOS DE MEMORIA
TIPOS DE MÓDULOS DE MEMORIA
 
CARCASAS DE ORDENADOR
CARCASAS DE ORDENADORCARCASAS DE ORDENADOR
CARCASAS DE ORDENADOR
 
TIPOS DE TORNILLOS
TIPOS DE TORNILLOSTIPOS DE TORNILLOS
TIPOS DE TORNILLOS
 
PRACTICAS DE REDES: PRÁCTICA 26
PRACTICAS DE REDES: PRÁCTICA 26PRACTICAS DE REDES: PRÁCTICA 26
PRACTICAS DE REDES: PRÁCTICA 26
 
PRACTICAS DE REDES: PRÁCTICA 25
PRACTICAS DE REDES: PRÁCTICA 25PRACTICAS DE REDES: PRÁCTICA 25
PRACTICAS DE REDES: PRÁCTICA 25
 
PRACTICAS DE REDES: PRÁCTICA 24
PRACTICAS DE REDES: PRÁCTICA 24PRACTICAS DE REDES: PRÁCTICA 24
PRACTICAS DE REDES: PRÁCTICA 24
 
PRACTICAS DE REDES: PRÁCTICA 23
PRACTICAS DE REDES: PRÁCTICA 23PRACTICAS DE REDES: PRÁCTICA 23
PRACTICAS DE REDES: PRÁCTICA 23
 
REDES: TOMAS DE DATOS
REDES: TOMAS DE DATOSREDES: TOMAS DE DATOS
REDES: TOMAS DE DATOS
 
PRACTICAS DE REDES: PRÁCTICA 22
PRACTICAS DE REDES: PRÁCTICA 22PRACTICAS DE REDES: PRÁCTICA 22
PRACTICAS DE REDES: PRÁCTICA 22
 
PRACTICAS DE REDES: PRÁCTICA 21
PRACTICAS DE REDES: PRÁCTICA 21PRACTICAS DE REDES: PRÁCTICA 21
PRACTICAS DE REDES: PRÁCTICA 21
 
PRACTICAS DE REDES: PRÁCTICA 20
PRACTICAS DE REDES: PRÁCTICA 20PRACTICAS DE REDES: PRÁCTICA 20
PRACTICAS DE REDES: PRÁCTICA 20
 
PRACTICAS DE REDES: PRÁCTICA 19
PRACTICAS DE REDES: PRÁCTICA 19PRACTICAS DE REDES: PRÁCTICA 19
PRACTICAS DE REDES: PRÁCTICA 19
 

DISPOSITIVOS MÓVILES: MATERIAL DESIGN II

  • 1.
  • 3.
  • 4. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA COMENZANDO A PROGRAMAR
  • 5. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA MATERIAL DESIGN
  • 6. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA Presentado durante el Google I/O 2014, y bajo la autoría del chileno Matías Duarte.
  • 7. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA A partir de la versión 5.0 de Android (API 21)
  • 8. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA dependencies { … compile ‘com.android.support:design:22.2.0’ }
  • 9. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA Google no la quiere aplicar exclusivamente a dispositivos móviles, sino que pretende utilizar material design en todo tipo de contenidos digitales.
  • 10. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA Es un concepto, una filosofía, unas pautas enfocadas al diseño utilizado en Android, pero también en la web y en cualquier plataforma.
  • 11. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA
  • 12. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA Está basado en objetos materiales. Piezas colocadas en un espacio (lugar) y con un tiempo (movimiento) determinado.
  • 13. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA Es un diseño donde la profundidad, las superficies, los bordes, las sombras y los colores juegan un papel principal.
  • 14. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA Aproximándose a la realidad, guiándose por las leyes de la física, animaciones lógicas, con objetos superpuestos pero que no puedan atravesarse unos a otros.
  • 15. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA CASILLAS BIEN ORDENADAS COLORES E IMÁGENES LLAMATIVOS TIPOGRAFÍAS CLARAS LUCES Y SOMBRAS JERARQUIZADAS
  • 16. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA
  • 17. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ELEMENTOS DE DISEÑO
  • 18. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ELEMENTOS: LA SUPERFICIE Y LA LUZ
  • 19. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ELEMENTOS: COMBINACIONES DE COLOR
  • 20. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ELEMENTOS: COLORES
  • 21. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA Palette es una librería que permite extraer colores de una imagen, no usarse en el hilo principal ELEMENTOS: PALETTE
  • 22. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ELEMENTOS: PALETTE Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() { @Override public void onGenerated(Palette palette) { titulo.setTextColor(palette.getLightVibrantColor(defaultTextColor)); autor.setTextColor(palette.getVibrantColor(defaultTextColor)); } });
  • 23. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ELEMENTOS: PALETTE dependencies { … compile ‘com.android.support:palette-v7:22.2.0’ }
  • 24. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ELEMENTOS: MOVIMIENTO
  • 25. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ELEMENTOS: ELEVACIÓN
  • 26. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ELEMENTOS: TRANSICIONES
  • 27. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ELEMENTOS: TRANSICIONES <android.support.v7.widget.CardView android:stateListAnimator="@drawable/animacion” <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <set> <objectAnimator android:propertyName="translationZ" android:duration="@android:integer/config_shortAnimTime" android:valueTo="10dp" android:valueType="floatType"/> </set> </item> <item android:state_pressed="false“ > <set> <objectAnimator android:propertyName="translationZ" android:duration="100" android:valueTo="2dp" android:valueType="floatType"/> </set> </item> </selector>
  • 28. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ELEMENTOS: ELEVACIÓN <button android:stateListAnimator=“@anim/fab_animfab” android:transictionName=“fab” ...//… Intent in = new Intent (Primera.this, Segunda.class); ActivityOptions opciones = ActivityOptions.makeSceneTransitionAnimation( Primera.this, Pair.create(fabButton, "fab")); startActivity(in, opciones.toBundle()); ...//…
  • 29. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ELEMENTOS: RIPPLES
  • 30. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NUEVAS LIBRERÍAS
  • 31. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATORDRAWVER RECYCLERVIEW CARDVIEW TOOLBAR ACTION BAR TABLAYOUT SNACKBAR FLOATING ACTION BUTTON EDITTEXT/TEXTINPUTLAYOUT NUEVAS LIBRERÍAS
  • 32. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TEXTINPULAYOUT
  • 33. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TEXTINPUTLAYOUT textColorHint colorControlActivated
  • 34. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TEXTINPUTLAYOUT
  • 35. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TEXTINPUTLAYOUT El foco en un campo de texto mueve el hint hacia la parte superior, haciendo que el usuario nunca pierda el contexto del contenido que está escribiendo.
  • 36. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TEXTINPUTLAYOUT LABEL TEXT INPUT TEXT 16 16 8 8 72 PADDING ABOVE LABEL TEXT LABEL HEIGHT PADDING BELOW INPUT TEXT PADDING BETWEN TEXT PADDING BELOW DIVIDER
  • 37. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TEXTINPUTLAYOUT LABEL TEXT INPUT TEXTROBOTO REGULAR 16P ROBOTO REGULAR 12
  • 38. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TEXTINPUTLAYOUT: XML <android.support.design.widget.TextInputLayout app:counterEnabled="true" app:counterMaxLength="30" app:errorEnabled="true"> <EditText ..//.. </android.support.design.widget.TextInputLayout>
  • 39. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TEXTINPUTLAYOUT: JAVA import android.support.design.widget.TextInputLayout;
  • 40. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TEXTINPUTLAYOUT: JAVA import android.widget.EditText; import android.text.Editable; import android.text.TextWatcher; import android.util.Patterns;
  • 41. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA FLOATING ACTION BUTTONS (FAB)
  • 42. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA FLOATING ACTION BUTTONS (FAB)
  • 43. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA FLOATING ACTION BUTTONS (FAB): TAMAÑO
  • 44. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA FLOATING ACTION BUTTONS (FAB): TAMAÑO FAB NORMAL ICONO 24 X 24 DP CÍRCULO 56 X 65 DP FAB MINI ICONO 24 X 24 DP CÍRCULO 40 X 40 DP
  • 45. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA FLOATING ACTION BUTTONS (FAB): FEEDBACK
  • 46. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA FLOATING ACTION BUTTONS (FAB): ICONO
  • 47. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA FLOATING ACTION BUTTONS (FAB): ICONO
  • 48. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA FLOATING ACTION BUTTONS (FAB): ASPECTO
  • 49. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA FLOATING ACTION BUTTONS (FAB): ASPECTO
  • 50. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA FLOATING ACTION BUTTONS (FAB): ASPECTO
  • 51. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA FLOATING ACTION BUTTONS (FAB): USO
  • 52. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA FLOATING ACTION BUTTONS (FAB): MORPHING
  • 53. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA FLOATING ACTION BUTTONS (FAB): PANTALLA COMPLETA
  • 54. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA FLOATING ACTION BUTTONS (FAB): PANTALLA GRANDE
  • 55. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA dependencies { … compile ‘com.android.support:design:22.2.0’ } FLOATING ACTION BUTTONS (FAB)
  • 56. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA import android.support.design.widget.FloatingActionButton; FLOATING ACTION BUTTONS (FAB)
  • 57. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA <android.support.design.widget.FloatingActionButton android:id="@+id/miboton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_bot" app:fabSize="normal" app:borderWidth="0dp" /> FLOATING ACTION BUTTONS (FAB)
  • 58. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SNACKBAR
  • 59. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SNACKBAR Muestra feedback sobre alguna operación realizada por el usuario, y es similar a un toast ya que aparece en pantalla por un corto periodo de tiempo y después desaparece automáticamente.
  • 60. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SNACKBAR
  • 61. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA APARECE DESDE EL INFERIOR DE LA PANTALLA SOLO PUEDE MOSTRARSE UN AL MISMO TIEMPO DEBE MOSTRAR MENSAJES CORTOS PUEDE DESCARTARSE HACIA UN LATERAL SNACKBAR
  • 62. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SNACKBAR
  • 63. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SNACKBAR: MEDIDAS EN MÓVIL
  • 64. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SNACKBAR: MEDIDAS EN TABLET
  • 65. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SNACKBAR import android.support.design.widget.Snackbar;
  • 66. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA CONTEXTO/VISTA TEXTO Snackbar.make() DURACCIÓN SNACKBAR: CONSTRUCCIÓN
  • 67. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SNACKBAR: CONSTRUCCIÓN Snackbar.make(view, “TEXTO A MOSTRAR", Snackbar.LENGTH_LONG) .setAction(“BOTON", new View.OnClickListener() { @Override public void onClick(View view) { CÓDIGO RESPUESTA } }) .show();
  • 68. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SNACKBAR <item name="colorAccent">@color/accentColor</item> SNACKBAR: CONSTRUCCIÓN ESTILOS
  • 69. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SNACKBAR: CONSTRUCCIÓN ESTILOS Snackbar.make(view, “TEXTO A MOSTRAR", Snackbar.LENGTH_LONG) .setActionTextColor(getResources().getColor(R.color.snackbar_action)) View snackBarView = snackbar.getView(); snackBarView.setBackgroundColor(getResources().getColor(R.color.snackbar_background)); TextView tv = (TextView) snackBarView.findViewById(android.support.design.R.id.snackbar_text); tv.setTextColor(getResources().getColor(R.color.snackbar_message)); .setAction(“BOTON", new View.OnClickListener() { @Override public void onClick(View view) { CÓDIGO RESPUESTA } }) .show();
  • 70. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SNACKBAR: CONSTRUCCIÓN ESTILOS <android.support.design.widget.CoordinatorLayout
  • 71. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TABLAYOUT
  • 72. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:design:22.2.0‘ } TABS: BUILDS GRANDLE
  • 73. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TABS CON MATERIAL DESIGN <android.support.design.widget.TabLayout android:id="@+id/sliding_tabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="scrollable" /> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1" android:background="@android:color/white" />
  • 74. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TABS CON MATERIAL DESIGN protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tabs05); ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); viewPager.setAdapter(new Adaptador(getSupportFragmentManager(), Tabs05.this)); TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); tabLayout.setupWithViewPager(viewPager); }
  • 75. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TABS CON MATERIAL DESIGN: ESTILOS MANIFEST TEMA STYLES COLOR DIMENS
  • 76. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TABS CON MATERIAL DESIGN: TABS CON TOOLBAR <android.support.design.widget.CoordinatorLayout CODIGO <android.support.design.widget.AppBarLayout CODIGO <android.support.v7.widget.Toolbar CODIGO <android.support.design.widget.TabLayout CODIGO </android.support.design.widget.AppBarLayout> CODIGO <android.support.v4.view.ViewPager CODIGO </android.support.design.widget.CoordinatorLayout>
  • 77. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ACTION BAR CON TABS
  • 78. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA IMPLEMENTAMOS EL VIEWPAGER AGREGAMOS LA TABLAYOUT IMPLEMENTAMOS LA TOOLBAR AGREGAMOS EL COORDINATORLAYOUT IMPLEMENTAMOS LA APPBAR PERSONALIZAMOS EL TEMA ACTION BAR CON TABS
  • 79. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ACTION BAR CON TABS <android.support.design.widget.CoordinatorLayout CÓDIGO <android.support.design.widget.AppBarLayout> CÓDIGO <android.support.v7.widget.Toolbar> CÓDIGO <android.support.design.widget.TabLayout> CÓDIGO </android.support.design.widget.AppBarLayout> CÓDIGO <android.support.v4.view.ViewPager> CÓDIGO </android.support.design.widget.CoordinatorLayout>
  • 80. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA CREAMOS EL ADAPTADOR ACTION BAR CON TABS
  • 81. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ACTION BAR CON TABS public class Adaptador extends FragmentPagerAdapter { public Adaptador(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return null; } @Override public CharSequence getPageTitle(int position) { return null; } @Override public int getCount() { return 0; } }
  • 82. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA MODIFICAMOS EL CONSTRUCTOR ACTION BAR CON TABS
  • 83. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ACTION BAR CON TABS public class Adaptador extends FragmentPagerAdapter { int numeroDeSeciones public Adaptador(FragmentManager fm, int numeroDeSeciones) { super(fm); this. numeroDeSeciones = numeroDeSeciones } ..//.. @Override public int getCount() { return numeroDeSeciones; } }
  • 84. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA MODIFICAMOS EL MÉTODO getItem() ACTION BAR CON TABS
  • 85. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ACTION BAR CON TABS @Override public Fragment getItem(int position) { switch (position) { case 0: return new Fragmento1(); case 1: return new Fragmento2(); case 2: return new Fragmento3(); default: return null; } }
  • 86. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA MODIFICAMOS EL MÉTODO getPageTitle() ACTION BAR CON TABS
  • 87. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ACTION BAR CON TABS @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return new “TAB 1”; case 1: return new “TAB 2“ ; case 2: return new “TAB 3”; default: return null; } }
  • 88. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SE CREA LA VISTA DE LOS FRAGMENTOS SE CREA EL JAVA DE LOS FRAGMENTOS ACTION BAR CON TABS
  • 89. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SE GESTIONA EL INFLADO DEL MENÚ SE CREA EL JAVA PRINCIPAL ACTION BAR CON TABS
  • 90. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ACTION BAR CON TABS public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_actionbar03, menu); return true; }
  • 91. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SE INICIA LA TOOLBAR ACTION BAR CON TABS
  • 92. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ACTION BAR CON TABS Toolbar toolbar = (Toolbar) findViewById(R.id.Toolbar); setSupportActionBar(toolbar);
  • 93. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SE INICIA AÑADEN PESTAÑAS SE CONFIGURA EL TABLAYOUT SE INICIA EL TABLAYOUT ACTION BAR CON TABS
  • 94. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ACTION BAR CON TABS TabLayout tabLayout = (TabLayout) findViewById(R.id.TabLayout); tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); tabLayout.setTabMode(TabLayout.MODE_FIXED); tabLayout.addTab(tabLayout.newTab()); tabLayout.addTab(tabLayout.newTab()); tabLayout.addTab(tabLayout.newTab());
  • 95. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA VINCULAMOS ADAPTADOR Y VIEWPAGER INICIALIZAMOS ADAPTADOR SE INICIA EL VIEWPAGER ACTION BAR CON TABS
  • 96. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ACTION BAR CON TABS private Adaptador Adaptador; private ViewPager ViewPager; @Override protected void onCreate(Bundle savedInstanceState) ViewPager = (ViewPager) findViewById(R.id.ViewPager); Adaptador = new Adaptador(getSupportFragmentManager(), tabLayout.getTabCount()); ViewPager.setAdapter(Adaptador);
  • 97. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA AÑADIMOS EL CAPTURADOR DE EVENTOS ACTION BAR CON TABS
  • 98. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ACTION BAR CON TABS tabLayout.setupWithViewPager(ViewPager);
  • 99. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TOOLBAR
  • 100. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA TOOLBAR <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_height="wrap_content" android:layout_width="match_parent" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" android:elevation="@dimen/elevation" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" tools:ignore="UnusedAttribute"/>
  • 101. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA SE INICIA LA TOOLBAR ACTION BAR CON TABS
  • 102. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA ACTION BAR CON TABS Toolbar toolbar = (Toolbar) findViewById(R.id.Toolbar); setSupportActionBar(toolbar);
  • 103. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATORDRAWVER RECYCLERVIEW CARDVIEW SNACKBAR EDITTEXT/TEXTINPUTLAYOUT NUEVAS LIBRERÍAS
  • 104. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA CARDVIEW
  • 105. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA CARDVIEW
  • 106. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA CARDVIEW NIVELES EN PANTALLA
  • 107. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA CARDVIEW dependencies { … compile ‘com.android.support:cardview-v7:22.2.0’ }
  • 108. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA CARDVIEW: XML <android.support.V7.widget.CardView card_view:cardCornerRadius="4dp" card_view:cardElevation="4dp" card_view:cardUseCompatPadding="true"> <Relativelayout ..//.. </android.support. V7.widget.CardView>
  • 109. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA contentPadding cardUseCompatPadding cardPreventCornerOverlap cardMaxElevation cardElevation cardCornerRadius CARDVIEW: XML cardBackgroundColor
  • 110. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECYCLERVIEW
  • 111. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW Es una clase que hereda de ViewGroup que permite mostrar grandes colecciones o conjuntos de datos pero solo se dedica a reciclar vistas, otros componentes serán responsables de acceder a los datos y mostrarlos.
  • 112. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW RecyclerView necesita del método setLayoutManager(LayoutManager layout) para asignar un tipo de layout que le indique cómo debe renderizar, dando origen a un patrón por composición.
  • 113. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA StaggeredGridLayoutManager RECICLERVIEW: TIPOS DE LAYOUTMANAGER GridLayoutManager LinearLayoutManager
  • 114. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: TIPOS DE LAYOUTMANAGER LinearLayoutManager LinearLayoutManager linearLayoutManager = new LinearLayoutManager( this, LinearLayoutManager.VERTICAL, false); LinearLayoutManager
  • 115. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: TIPOS DE LAYOUTMANAGER LinearLayoutManager – LISTAS HORIZONTALES
  • 116. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: TIPOS DE LAYOUTMANAGER GridLayoutManager GridLayoutManager gridLayoutManager = new GridLayoutManager ( this, 2, GridLayoutManager.VERTICAL, false); GridLayoutManager
  • 117. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: TIPOS DE LAYOUTMANAGER GridLayoutManager - VISTAS RESPONSIVAS final int columnas= getResources().getInteger(R.integer. columnas); GridLayoutManager gridLayoutManager = new GridLayoutManager ( this, columnas, GridLayoutManager.VERTICAL, false); GridLayoutManager <integer name=“columnas">1</integer> <integer name=“columnas">2</integer> VALUES VALUES LARGOS
  • 118. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: TIPOS DE LAYOUTMANAGER GridLayoutManager + SpanSizeLookup Usando el metodo setSpanSizeLookup(SpanSize Lookup spanSizeLookup) establecemos la cantidad de spans que debe ocupar cada elemento en el adaptador.
  • 119. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: TIPOS DE LAYOUTMANAGER GridLayoutManager + SpanSizeLookup gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() @Override public int getSpanSize(int position) { int index = postion % 5; switch(index){ case 0: return 1; case 1: return 2; case 2: return 1; } }); GridLayoutManager SpanSizeLookup
  • 120. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: TIPOS DE LAYOUTMANAGER StaggeredGridLayoutManager StaggeredGridLayoutManager staggeredGridLayoutManager = new GridLayoutManager ( this, 2, GridLayoutManager.VERTICAL, false); staggeredGridLayoutManager.setGapStrategy(StaggeredGridL ayoutManager.GAP_HANDLING_NONE); StaggeredGridLayoutManager
  • 121. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW RecyclerView nos brinda un nuevo componente de nombre Recycler una clase encargada de gestionar si una vista será (desechada o separada) scrapped or detached para su reutilización.
  • 122. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW LAYOUTMANAGER RECYCLER ADAPTADOR OBTIENE LA VISTA RECICLA LA VISTA
  • 123. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW Si un vista es scrapped indica que continúa enlazada con el RecyclerView pero se ha marcado para su posible eliminación o reutilización. Cuando es reutilizada es considerada dirty y el adaptador es quien debe volver a enlazarla antes de ser mostrada.
  • 124. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW RECYLER POOL SCRAP HEAP
  • 125. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: SCRAP HEAP Es donde podemos interactuar con las vistas que no estás utilizando en el momento pero vas a volver a utilizar de forma inmediata, se consigue mediante el método detachAndScrapView(View child, Recycler recycler)
  • 126. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: RECYCLER POOL Es donde encuentran las vistas que no necesitamos más y utilizando el método removeAndRecycleView(View child, Recycler recycler) removemos las vistas.
  • 127. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: XML <android.support.v7.widget.RecyclerView android:id="@+id/reciclador" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="3dp" android:scrollbars="vertical" android:background="@color/colorDivider"/>
  • 128. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: JAVA import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView;
  • 129. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA DECLARA ELEMENTOS DE ARQUITECTURA RECICLERVIEW: JAVA
  • 130. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: JAVA private RecyclerView recycler; private RecyclerView.Adapter adapter; private RecyclerView.LayoutManager lManager;
  • 131. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA OBTIENE Y CONFIGURA EL RECYCLER RECICLERVIEW: JAVA
  • 132. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: JAVA recycler = (RecyclerView) findViewById(R.id.reciclador); recycler.setHasFixedSize(true);
  • 133. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA UTILIZA EL ADMINISTRADOR PARA LINEARLAYOUT RECICLERVIEW: JAVA
  • 134. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: JAVA lManager = new LinearLayoutManager(this); recycler.setLayoutManager(lManager);
  • 135. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA CREAMOS UN NUEVO ADAPTADOR RECICLERVIEW: JAVA
  • 136. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: JAVA adapter = new Adaptador(datos); recycler.setAdapter(adapter);
  • 137. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: ADAPTADOR.JAVA public class Adaptador extends RecyclerView.Adapter<Adaptador.AnimeViewHolder> { private List<Encapsulador> items; public static class AnimeViewHolder extends RecyclerView.ViewHolder { --- ITEMS--- }
  • 138. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RECICLERVIEW: ADAPTADOR.JAVA MÉTODOS onBindViewHolder onCreateViewHolder
  • 139. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATORDRAWER
  • 140. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER Es un nuevo interfaz de usuario en forma de un panel lateral que puede contener el menú principal u otras opciones de navegación de la App, y que permanece oculto por defecto.
  • 141. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER
  • 142. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: APERTURA DESLIZAMIENTO DESDE EL BORDE IZQUIERDO TOCANDO EL ICONO DE LA APLICACIÓN
  • 143. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA PRESIONANDO EL BOTÓN ATRÁS TOCANDO EL CONTENIDO FUERA DEL NAVIGATION NAVIGATION DRAWER: CIERRE DESLIZAMIENTO HACIA EL BORDE IZQUIERDO TOCANDO EL ICONO DE LA APLICACIÓN
  • 144. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: NAVEGACIÓN CRUZADA
  • 145. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: NAVEGACIÓN PROFUNDA
  • 146. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: NAVEGACIÓN EN ÁRBOL
  • 147. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: ELEMENTOS ELEMENTOS PLEGABLES CONTADORES ICONOS TÍTULOS
  • 148. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: ELEMENTOS TÍTULOS – ICONOS - CONTADORES
  • 149. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: ELEMENTOS ELEMENTOS PLEGABLES
  • 150. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: ELEMENTOS
  • 151. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: ELEMENTOS
  • 152. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: XML <android.support.v4.widget.DrawerLayout <include layout="@layout/contenido" /> <android.support.design.widget.NavigationView android:id="@+id/navigation“ app:headerLayout="@layout/cabecera" app:menu="@menu/menu_navegacion" /> </android.support.v4.widget.DrawerLayout>
  • 153. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: DRAWERLAYOUT Un DrawerLayout es un contenedor especial de la librería de soporte, que alberga dos tipos de contenido, el contenido principal y el contenido para el Navigation Drawer.
  • 154. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: JAVA SE REFERENCIA EL NAVIGATION DRAWER SE DECLARA EL NAVIGATION DRAWER
  • 155. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: JAVA private DrawerLayout drawerLayout; drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
  • 156. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: JAVA SE CREA UN ESCUCHADOR AL NAVIGATION DRAWER
  • 157. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: JAVA navigationView.setNavigationItemSelectedListener( new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { menuItem.setChecked(true); ..//.. return true; } } );
  • 158. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: CIRCLEIMAGEVIEW
  • 159. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA dependencies { … compile 'de.hdodenhof:circleimageview:1.3.0' } NAVIGATION DRAWER: CIRCLEIMAGEVIEW
  • 160. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA NAVIGATION DRAWER: CIRCLEIMAGEVIEW <de.hdodenhof.circleimageview.CircleImageView android:id="@+id/circle_image" android:layout_width=“20dp" android:layout_height=“20dp" android:layout_marginBottom="16dp" android:scaleType="centerCrop" android:src="@drawable/imagen" app:border_color="@android:color/white" app:border_width="1dp" />
  • 161. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA RecyclerView Y CustomView RecyclerView.ItemAnimator RecyclerView.ItemDecoration ACTIVIDAD DE INVESTIGACIÓN ESTILO DE LAS ETIQUETAS EN TEXTINPULAYOUT
  • 162. PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES MATERIAL DESIGN © J.D.CABRERA PROGRAMACIÓN MULTIMEDIA Y DISPOSITIVOS MÓVILES