Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PROGRAMACIÓN MULTIDISPOSITIVO EN ANDROID

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for Paradigma Paradigma
April 23, 2013

PROGRAMACIÓN MULTIDISPOSITIVO EN ANDROID

Seminario impartido por Juan Miguel Muñoz Rondán para Javahispano y Paradigma Tecnologico en la Universidad CEU San Pablo de Madrid, Abril 2013
Más detalles en http://www.paradigmatecnologico.com/seminarios/programacion-multidispositivo-en-android/

Avatar for Paradigma

Paradigma

April 23, 2013
Tweet

More Decks by Paradigma

Other Decks in Technology

Transcript

  1. BIBLIOGRAFÍA  Android in Action (Third Edition)  http://www.manning.com/ableson3/ 

    Programming Android (2nd Edition)  http://shop.oreilly.com/product/0636920010364.do  Android developers  http://developer.android.com/index.html 2
  2. INDICE 1. Android 4.0, estandadarización de estilos. 2. Métricas. 3.

    Componentes multidispositivos: Action Bar. 4. Componentes para la programación para tablets: Fragments. 5. Patrones para la programación multidispositivo. 9
  3. ESTANDARIZACIÓN VISUAL  Usar elementos de Android (no imitar a

    otras plataformas)  No utilizar botón “back”
  4. ESTANDARIZACIÓN VISUAL  No utilizar TabBars en la parte baja

    de la pantalla.  No usar icono “arrow”
  5. TAMAÑO Y DENSIDAD  Tamaño de pantalla  Es el

    tamaño real de la pantalla (inches) pulgadas.  La medida la proporciona la diagonal.  Densidad  Cantidad de pixeles dentro de una porción real.  Se utiliza dpi (dots per inch) puntos por pulgada. 15
  6. DENSITY-INDEPENDENT PIXELS  Dp (Density-Independent Pixels)  Representa un punto

    de tamaño real.  Independiente de la densidad de puntos por pulgada.  1dp = 1px (mdpi)  Sp (Scale-independent Pixels)  Como dp, salvo que su tamaño depende del tamaño de la fuente en la preferencias  Indicado para los textos. 16
  7. CUALIFICADORES DE RECURSOS  Un cualificador indica a Android que

    tipo de recurso debe utilizar.  Carpeta <resources_name>-<config_qualifier>  Resources_name es el nombre del directorio de recursos estandar (layout, drawable).  Config_qualifier especifica una característica para que se utilice esta carpeta en los dispositivos que lo cumplan 17
  8. CUALIFICADORES DE RECURSOS 18  -ldpi, -mdpi, -hdpi, -xdpi 

    -small, -normal, -large, -xlarge  -land, -port  -sw<N>dp (-sw600dp, -sw720dp)
  9. TIPOS DE TAMAÑO  Small  426dp x 320dp 

    Normal  470dp x 320dp  Large  640dp x 480dp  Xlarge (Extra Large)  960dp x 720 19
  10. TIPOS DE DENSIDADES 20  ldpi  Low density (~120dpi)

     mdpi  Medium density (~160dpi)  hdpi  High density (~240dpi)  xhdpi  Extra high density (~320dpi)  Xxhdpi  Extra extra high density  Densidad no especificada (~480dpi) 2.0 1.5 1.0 0.75 Patrón “48dp”
  11. ACTION BAR : MAIN ACTION BAR 25  App icon

     Icono de aplicación .  Proporciona una acceso a la vista jerárquicamente superior.  Aunque parecido, el botón “back” no vuelve a la vista jerárquicamente superior, sino a la vista anterior.
  12. ACTION BAR : MAIN ACTION BAR 26  View control

     Permite la navegación hacía las diferentes vistas.  Tiene el nombre de la vista actual.  Además del spinner existe la navegación por tabs.
  13. ACTION BAR : MAIN ACTION BAR 27  Action buttons

     Muestra iconos de las funciones más importantes.  Tres tipos de iconos:  Frecuentes. Siempre aparecen.  Importantes. Aparecen si hay espacio  Típico. No aparecerá nunca y se ubicaran en la lista de botones poco frecuentes.
  14. ACTION BAR : MAIN ACTION BAR 28  Action overflow

     Muestra iconos de las funciones menos importantes.  Dependiendo del tamaño y de la orientación del dispositivo se mostrarán más o menos iconos.
  15. ACTION BAR: ACTION BUTTONS 29  Menos de 360dp =

    2 iconos.  360-499dp = 3 iconos  500-599dp = 4 iconos  Más de 600dp = 5 iconos
  16. ACTION BAR : VIEW CONTROLS 31  Fixed Tab 

    Fácil mecanismo para cambiar de vista.  Siempre visibles.  Tres pestañas recomendadas.  Scrolled Tab  Se usan cuando hay muchas vistas disponibles.  Ocupan todo el ancho de pantalla  Spiner  Es un menu drop-down.  No hay una barra visible.  Ocupan menos espacio.
  17. ACTION BAR: BOTTOM BAR  Barra inferior, utilizada cuando se

    requiere mostrar más iconos que los que se permiten en el action bar. 33
  18. ACTION BAR  Aporta:  Uso intuitivo de la aplicación.

     Desarrollo para diferentes dispositivos (teléfonos o tablets), mucho más rápido y sencillo.  Hacen las interfaces Android más atractivas y homogéneas. 36
  19. TABLET  Mucho “aire” en las interfaces de usuario. 

    Solución:  Esconder Vistas y mostrarlas desde una Activity  Los desarrolladores demandaban una solución con un comportamiento consistente.  Elementos reutilizables  Fragments 38
  20. FRAGMENTS  Un Fragment se encarga de controlar el comportamiento

    de una porción de la interfaz de usuario de una Activity. 39
  21. FRAGMENTS  Tiene su propio ciclo de vida.  Su

    ciclo de vida está totalmente ligado al ciclo de vida de una Activity.  Recibe eventos de entrada.  No tienen contexto propio. Su contexto es el de la activity a la que están ligados.  Se podría definir como una “sub-activity”. 40
  22. FRAGMENTS. CICLO DE VIDA • OnAtach. • Cuando el fragment

    es asociado a su activity. • onCreate. • Estado inicial de la creación del fragment. • onCreateView. • Cuando el fragment se le ha asociado la vista. • onActivityCreated. • Cuando la activity padre ha competado su propio onCreate(). • onStart. • Cuando el fragment esta visible. • onResume. • Cuando la fragmente puede interactuar con el usuario 41
  23. FRAGMENTS. CICLO DE VIDA • OnPause. • Cuando el fragment

    ha dejado de interactuar con el usuario • onStop. • Cuando el fragment ya no es visible por el usuario • onDestroyView. • Cuando el fragment limpia los recursos asociados con su vista. • onDestroy. • Estado final del fragment. • onDetach. • Se llama justo antes de dejar de estár asociado a la activity 42
  24. FRAGMENTS. ASOCIAR A LA ACTIVITY  Mediante XML: <?xml version="1.0"

    encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_view" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment class="com.paradigma.seminario.ListFragment" android:id="@+id/frag_summary_listview" android:tag="summary_listview" android:layout_width=" match_parent " android:layout_height="match_parent" android:layout_weight="1" android:padding="10dp" /> </LinearLayout> 43
  25. FRAGMENTS. ASOCIAR A LA ACTIVITY  Programáticamente con Fragment Manager

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android” android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/frame_fragment” android:layout_width="0dp" android:layout_height="match_parent" /> </LinearLayout> ExampleFragment exampleEragment = new ExampleFragment(); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction transacion = fragmentManager.beginTransaction(); transacion.add( R.id.frameFragment1, exampleEragment ); transaction.addToBackStack(null); transacion.commit(); 44
  26. FRAGMENTS.TIPOS  Fragment  ListFragment  Fragment con métodos para

    la visualización de una lista de elementos.  WebFragment  Fragment para visualizar una web.  DialogFragment  Fragment para un dialog.  PreferenceFragment  Muestra una lista de objetos por categorías. 45
  27. FRAGMENTS. COMUNICACIÓN  Utilizando un listener public class SummaryListFragment extends

    ListFragment { OnArticleSelectedListener mListener; … @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mListener = (OnArticleSelectedListener) activity; } catch (ClassCastException e) { throws … } } 46 public interface OnArticleSelectedListener { public void onArticleSelected(String url); }
  28. FRAGMENTS. COMUNICACIÓN  La activity padre debe implementar la intefaz

    del listener y operar cuando se llame al listener. public class MainActivity extends Activity implements SummaryListFragment.OnArticleSelectedListener{ … @Override public void onArticleSelected(String url_selected) { current_url = url_selected; launchDetailWebFragment(); } 47
  29. SOPORTE PARA VERSIONES ANTIGUAS  El uso de Fragments apareció

    en la versión 3.0.  Más de la mitad de los dispositivos funcionan sobre una versión anterior a la 3.0. 48  Android provee una biblioteca de soporte:  android.support.v4 (Soporte para v4 o superior).  android.support.v13 (Soporte para v13 o superior).
  30. FRAGMENTS. RECOMENDACIONES  No utilizar asociaciones de Fragments programáticas o

    dínamicas en XML <fragments>  No utilizar constructores con parámetros, todos deben ser sin parámetros.  Reutilizar Fragments.  No es recomendable el uso de “Fragments para todo”. Si la aplicación es solo para móvil, debería construirse utilizando únicamente activities. 49
  31. SOPORTE PARA TABLETS Y MÓVILES  Uso de cualificadores para

    determinar en tiempo de ejecución los recursos de los distintos tipos de dispositivos.  Recursos distintos dependiendo del dispositivo en tiempo real.  res/values-large/layouts.xml  res/values/layouts.xml 52
  32. MULTI-PANE LAYOUTS  Mecanismo de integración de varias vistas para

    adaptarse a los diferentes tamaños de pantallas.  Tipos: Adaptación Collapse Show/Hide