jueves, 1 de enero de 2015

Android Lollipop: CardView y RecyclerView

Nuevo UI Widgets: CardView y RecyclerView


Android 5.0 introduce 2 nuevos widgets:
RecyclerView – Es un view group para mostrar listas scrolleables con items dinamicos.
CardView –Un layout básico con esquinas redondeadas

Para crear listas complejas y tarjetas con estilos de material desing en las aplicaciones, se puede utilizar el RecyclerView y widgets de CardView. Veamos que son estos componentes.

RecyclerView: Es una actualización de ListView, es más fácil de usar, optimiza recursos, y ofrece animaciones predeterminadas. Útil para su uso en colecciones dinámicas (ListView y GridView).  RecyclerView es una mejora de lo antes visto en ListView o GridView. Es un widget que despliega vistas que comparten la misma estructura de vista de los datos, es decir , son vistas que se “repiten” en forma, pero no en información.
RecyclerView nos proporciona un LayoutManager que es el encargado de asignar el orden de los elementos (Grid o Linear), Para que esto funcione necesitamos construir nuestro Adapter y a su vez, el Adapter necesita de un Dataset, es decir, un conjunto de objetos.
El Dataset requiere de un arreglo de objetos a mostrar. Regularmente un objeto se crea mediante POJO (Plain Old Java Object) y dicho POJO contiene todas las características del objeto.
Crear el Adapter no es tan complicado, lo primero que debemos hacer es crear una clase que extienda de RecyclerView.Adapter<T_Adapter.ViewHolder> e Implementar los métodos requeridos. El constructor recibe dos parámetros, uno es el Dataset  y el otro es el ItemLayout (es el layout que creamos con el CardView).
La clase interna ViewHolder que extiende de RecyclerView.ViewHolder contiene todos los llamados a los widgets contenidos en el ItemLayout(por ejemplo un ImageView y 2 TextView), por lo que se garantiza que el llamado es solo una vez, haciendo que consuma menos recursos a nivel de batería y procesamiento. Anteriormente un ViewHolder era una buena práctica, ahora es algo obligatorio.
CardView: Nos permite agrupar casi cualquier tipo y número de elementos en una vista que, al final, resulta un tipo “Tarjeta” como lo visto en Google Now. Al venir de la librería de soporte, este nuevo widget funciona igual en versiones anteriores a 5.0.
El uso de CardView es muy sencillo, al final se trata de un widget que otorga dicho UI a lo que se encuentre entre el. Uno de sus atributos es el poder asignar bordes redondeados a la carta: card_view:cardCornerRadius="2dp". Ademas existe un atributo android:foreground="?android:attr/selectableItemBackground" para que la tarjeta obtenga la animación característica de Material Design al hacer clic sobre ella. La vista que tenemos será usada para nuestro RecyclerView.
Por ejemplo, para crear una tarjeta, definimos que cada elemento de una fila esta compuesto de un ImageView y 2 TextView acomodados mediante un RelativeLayout. Lo único que falta para que dicho UI tome forma de tarjeta es, como mencione anteriormente, colocarlos entre las etiquetas <android.support.v7.widget.CardView> con la configuración que se quiera.
Los widgets RecyclerView y CardView son parte de las v7 Support Libraries. Para utilizar estos widgets en su proyecto, debe agregar estas dependencias Gradle de módulo de su aplicación.

v7 Support Libraries - Material Desing en todas partes


Teníamos la esperanza de que la Support API contenga Material Design, el nuevo theme adoptado desde Android 5.0 Lollipop. Y por suerte sucedió: este nuevo theme se incluye en AppCompat 21.
Así que consideren, los que estan usando la AppCompat en proyectos anteriores, que la transición no será tan simple. Pero se puede.
De todos modos, ahora vamos a resumir los conceptos más básicos de las librerías de Compatibilidad en Lollipop.
Una pequeña aclaración: las transiciones de Lollipop no son compatibles hacia atrás, por lo que en este momento no se pueden ver esas transiciones suaves en dispositivos pre-21

En esta versión, Android introduce un nuevo widget llamado Toolbar. Se trata de una generalización del patrón  Action Bar que le da mucho más control y flexibilidad.
Toolbar es un View en la jerarquía como cualquier otro, por lo que es más fácil para interactuar con las demas vista, animar, y reaccionar a eventos.
También se puede configurarlo como barra de acción de actividad, lo que significa que sus acciones de menú estándar serán mostradas dentro de ella.

Integracion
Si no esta usando actualmente AppCompat, o comienza desde cero, así es como se configura:

- Todas sus Activities deben extender desde ActionBarActivity, la cual extiende de FragmentActivity desde la v4 support library, entonces podemos seguir usando fragments.
- Todos sus themes (con Action Bar/Toolbar) deben heredar desde Theme.AppCompat. Existen variantes disponibles, como Light y NoActionBar.
- Al inflar cualquier cosa que se mostrará en la barra de acción (como un SpinnerAdapter de lista de navegación en la ToolBar), asegúrese de usar el contexto de ToolBar, obtenido a través de getSupportActionBar().getThemedContext().
- Debe utilizar los métodos estáticos en MenuItemCompat para llamadas relacionadas con la acción de un MenuItem.
Para más información busquen en la guia de Action Bar API en donde se amplía AppCompat.


v7 appcompat library

Esta librería agrega soporte para Action Bar e incluye el soporte de la implementación de la interface visual usando material design. Atención: Esta librería depende de la v4 Support Library.

Estas son algunas de las clases que se incluyen en la v7 appcompat library:

ActionBar - Nos brinda una implementación de la action bar como patrón de diseño. Para más información sobre el uso de la Action Bar, buscar en la developer guide.
ActionBarActivity - Clase base (Actividad) de la aplicación que se debe utilizar como una clase base para las actividades que utilizan en la aplicación la Action Bar de Support Library.
ShareActionProvider - Agrega soporte para el share estandar (envio de email o post en redes sociales) que puede ser incluido en la action bar.

Esta librería está ubicada en el directorio <sdk>/extras/android/support/v7/appcompat/ luego de descargar la Android Support Libraries. Esta librería contiene los recursos de la interface de usuario. Para incluirlos, tienen que repasar en la guia oficial, las instrucciones para agregar librerias con recursos.

El Script de Gradle para incluir esta libreria es :  com.android.support:appcompat-v7:21.0.+
Y esta dependencia nos incluye la versión 21.0.0 o superior.

v7 cardview library
Esta librería es para dar soporte al CardView widget, que nos permite mostrar informacion dentro de las Cards manteniendo el look en cualquier aplicacion. Estas cards son utiles para implementar material design.

Esta librería se encuentra en el directorio <sdk>/extras/android/support/v7/cardview/ luego de descargar la Android Support Libraries.
Es también una libreria con recursos, al igual que la anterior. Y el Script de Gradle con la dependencia a esta libreria es:
com.android.support:cardview-v7:21.0.+ para la version 21.0.0 o superior.


v7 gridlayout library

Esta librería nos brinda soporte para la clase GridLayout, que permite organizar los elementos de interfaz de usuario mediante una cuadrícula de de celdas rectangulares. Para obtener información detallada acerca de las API librería GridLayout v7, consulte el paquete android.support.v7.widget en la referencia de la API.
Esta librería se encuentra en el directorio <sdk>/extras/android/support/v7/gridlayout/ luego de descargar la Android Support Libraries.
Es también una librería con recursos, al igual que la anterior. Y el Script de Gradle con la dependencia a esta libreria es:
com.android.support:gridlayout-v7:21.0.+ para la version 21.0.0 o superior.

Mas informacion:


Connectivity

Los cambios en la conectividad apuntan por el lado del wifi a detectar de forma más eficiente las redes y por el lado de Bluetooth a implementar el nuevo release 4.1 que mejora aún más los rendimientos de la batería y todas las ventajas que hemos visto en bluetooth 4.0.
Android 5.0 cuenta con Bluetooth 4.1 una vez que este esté disponible, más allá de que Bluetooth 4.1 este disponible desde diciembre del 2013


Media

Mayor calidad en el procesamiento de gráficos, mejoras de audio, video, y capacidades de la cámara.

  • Menor latencia en la entrada de audio asegurando que los requerimientos de retardo en la reproducción de música y las aplicaciones de comunicación, proveyendo así una asombrosa experiencia en tiempo real.
  • USB Audio support significa que puedes conectar micrófonos USB microphones, speakers, y muchos otros dispositivos de audio USB, como amplificadores mixers en tu dispositivo Android.
  • OpenGL ES 3.1 y el paquete de extensión de Android lo lleva a la vanguardia de los gráficos móviles poniéndolo a la par con la performance de los gráficos de desktop y consolas.
  • Una nueva gama de funcionalidades sobre fotografía profesional en Android Lollipop te permite:
    • Captura en full resolution frames cerca de 30 fps.
    • Soporta formatos rusticos como YUV y Bayer RAW.
    • Ajustes de control de captura para el sensor, lentes, y flash por frame individuales.
    • Captura metadata como ruidos modelos y información óptica.
  • Estado de la tecnología de video con soporte para HEVC para permitir la reproducción de videos de UHD 4K, transmisión directa para la reproducción de vídeo de alta calidad en Android TV y soporte mejorado para el streaming de HLS.

Device set up

Configurar un nuevo device en poco tiempo:
  • Tap & go: configurar instantáneamente tu nuevo Android o tablet con un simple tap en tu viejo dispositivo (esto requiere NFC).
  • Siempre que tengas un dispositivo Android tablet o telefono, tu puedes compartir tus aplicaciones de Google Play automáticamente desde cualquiera de tus viejos dispositivos.



Google acaba de publicar for FREE el libro: Android Quick Start Guide, Android 5.0, Lollipop: BAJAR LIBRO
Son 62 páginas de lectura obligada para todos los Android Developers.

saludos y hasta la proxima entrada del blog.

No hay comentarios:

Publicar un comentario