Componentes multidispositivos: Action Bar. 4. Componentes para la programación para tablets: Fragments. 5. Patrones para la programación multidispositivo. 9
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
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
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
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”
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.
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.
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.
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
Solución: Esconder Vistas y mostrarlas desde una Activity Los desarrolladores demandaban una solución con un comportamiento consistente. Elementos reutilizables Fragments 38
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
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
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
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
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
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).
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
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