Buenas prácticas en el desarrollo Android - Imaginática 2013

Post on 09-May-2015

1.470 views 3 download

description

Repasaremos las principales recomendaciones para hacer aplicaciones coherentes con el ecosistema Android, aprovechando todos los recursos a nuestra disposición, y que resulten en una experiencia de usuario lo más placentera posible. Básicamente, os conteremos las claves para hacer buenas aplicaciones. No será de alto nivel técnico, por lo que puede ser apta para cualquiera interesado en el mundo de las aplicaciones móviles.

Transcript of Buenas prácticas en el desarrollo Android - Imaginática 2013

Buenas prácticas en el desarrollo Android

¿Quiénes somos? Androcode.es

Cómo desarrollar aplicaciones para Android

Principios básicos

Principios básicos

Java y Dalvik

Activities, Services, Intents, ...

Recursos (la clase R)

Cómo desarrollar buenas aplicaciones para Android

Principios de diseño

Encántame

Simplifica mi vida

Hazme asombroso

Principios de diseño

Encántame

Simplifica mi vida

Hazme asombroso

Encántame

Sorprende al usuario

Los objetos reales son más divertidos

Permite la personalización

Aprende del usuario

Principios de diseño

Encántame

Simplifica mi vida

Hazme asombroso

Simplifica mi vida

Sé simple, imágenes mejor que palabras

Muestra sólo lo que necesita el usuario

Decide por él, pero déjale la última palabra

No pierdas al usuario ni sus cosas

Interrumpe sólo si es necesario

Principios de diseño

Encántame

Simplifica mi vida

Hazme asombroso

Hazme asombroso

Proporciona trucos

Sé educado y claro

Divide tareas complejas

Haz tú el trabajo pesado

Las cosas importantes hazlas rápido

Patrones de diseño

Action Bar

De los elementos más importantes

Consistente con el sistema

Recoge acciones comunes

Ayuda a la navegación

Action Bar

1. Icono o logo

2. Control de vista / Título

3. Action Items

4. Menú

Action Bar

Up vs Back

Compatibilidad

Las teclas hardware desaparecen, pero entonces...

Compatibilidad

¿Y qué ocurre con los móviles con teclas físicas?

Pulsar

Mantener pulsado

Deslizar

Arrastrar

Doble pulsación

Pellizcar

Gestos

Pulsar

Mantener pulsado

Deslizar

Arrastrar

Doble pulsación

Pellizcar

Gestos

Pulsar

Mantener pulsado

Deslizar

Arrastrar

Doble pulsación

Pellizcar

Gestos

Pulsar

Mantener pulsado

Deslizar

Arrastrar

Doble pulsación

Pellizcar

Gestos

Pulsar

Mantener pulsado

Deslizar (para desechar)

Arrastrar

Doble pulsación

Pellizcar

Gestos

Pulsar

Mantener pulsado

Deslizar

Arrastrar

Doble pulsación

Pellizcar

Gestos

Pulsar

Mantener pulsado

Deslizar

Arrastrar

Doble pulsación

Pellizcar

Gestos

Pulsar

Mantener pulsado

Deslizar

Arrastrar

Doble pulsación

Pellizcar

Gestos

Avisos fuera de contexto

Indicar acción en segundo plano

Acceso rápido a acciones

Parte fundamental de Android

Notificaciones

Ojo con el flujo

¿Cuándo debo lanzar una?

Establece prioridad, sin ser egoísta 4.1+

Notificaciones enriquecidas 4.1+

Notificaciones sí... pero bien

Antipatrones

Cómo NO hacer las cosas bien

Botón atrás o salir

Controles brillantes

Iconos copiados

Pestañas en la parte baja

Flechas en elementos de listas

Interfaz iOS

Botón atrás o salir

Controles brillantes

Iconos copiados

Pestañas en la parte baja

Flechas en elementos de listas

Interfaz iOS

Botón atrás o salir

Controles brillantes

Iconos copiados

Pestañas en la parte baja

Flechas en elementos de listas

Interfaz iOS

Botón atrás o salir

Controles brillantes

Iconos copiados

Pestañas en la parte baja

Flechas en elementos de listas

Interfaz iOS

Botón atrás o salir

Controles brillantes

Iconos copiados

Pestañas en la parte baja

Flechas en elementos de listas

Interfaz iOS

Botón atrás o salir

Controles brillantes

Iconos copiados

Pestañas en la parte baja

Flechas en elementos de listas

Interfaz iOS

Botón atrás o salir

Controles brillantes

Iconos copiados

Pestañas en la parte baja

Flechas en elementos de listas

Interfaz iOS

o  No abuses de los diálogos o  Muchos casos son evitables o  De carga bloqueantes o  De error o  De promoción o  Toasts

Diálogos

o  No abuses de los diálogos o  Muchos casos son evitables o  De carga bloqueantes o  De error o  De promoción o  Toasts

Diálogos

o  No abuses de los diálogos o  Muchos casos son evitables o  De carga bloqueantes o  De error o  De promoción o  Toasts

Diálogos

o  No abuses de los diálogos o  Muchos casos son evitables o  De carga bloqueantes o  De error o  De promoción o  Toasts

Diálogos

o  No abuses de los diálogos o  Muchos casos son evitables o  De carga bloqueantes o  De error o  De promoción o  Toasts

Diálogos

Consecuencias significantes Puede darle por error y no puede deshacerse

¿Cuándo usar diálogos?

Lo que no se ve

Más que buena

No todo es interfaz

Estar al día

Ser adivina

Estar adaptada

Comportarse suavemente

Cómo no agotar la batería

Push vs Pull

Más es menos

Adapta tus descargas

Desarrollo

Consejos sobre cómo mejorar el desarrollo

Entorno de desarrollo

Haznos un favor, usa Maven o  Proceso de construcción estándar o  Enfocado en la automatización o  Convención sobre configuración o  Gestión de dependencias o  Pruebas

https://code.google.com/p/maven-android-plugin/

Eclipse o IntelliJ IDEA

Eclipse o  Soporte oficial o  Más conocido

IntelliJ IDEA o  Mejor soporte Maven o  Utilidades para el desarrollo o  Más estable

Support Library

Fragment, ListFragment, DialogFragment FragmentManager, FragmentTransaction FragmentPagerAdapter, FragmentStatePagerAdapter, FragmentTabHost LoaderManager, Loader, AsyncTaskLoader, CursorLoader NotificationCompat, ShareCompat, TaskStackBuilder

FragmentCompat, FragmentPagerAdapter FragmentStatePagerAdapter, FragmentTabHost

v4

GridLayout v7

v13

ActionBar Sherlock

Más librerías

androidviews.net

theultimateandroidlibrary.com

Ejecución de tareas

Threads y Handlers o  Los viejos rockeros nunca mueren

AsyncTask o  Probablemente la técnica más utilizada

o  Ya no molan: ciclo de vida, ejecución en serie/paralelo, pérdidas de información,...

Loaders & Services o  Yeah!

Opciones básicas de almacenamiento

Shared Preferences o  Perfectas para las preferencias o  ¡Ojo! el resultado es un fichero XML, no abuses

Internal Storage o  Privado para tu aplicación

External Storage o  En principio visible para todos o  Comprueba siempre el estado

Opciones básicas de almacenamiento

Shared Preferences o  Perfectas para las preferencias o  ¡Ojo! el resultado es un fichero XML, no abuses

Internal Storage o  Privado para tu aplicación

External Storage o  En principio visible para todos o  Comprueba siempre el estado

Nunca uses rutas absolutas

Usa los métodos que proporciona

android

Bases de Datos

Soporte completo de SQLite pero... ¿Porqué escribir SQL?

ORMLite Hay muchas, muchísimas Si puedes usa ContentProvider o  Patrón fachada

o  Puedes "publicar" tus datos o  Gestión de multi-hilo y conexiones

Datos externos

Conectar o  java.net o  apache HTTP Client Consumir o  org.json o  org.w3c.dom o  org.xml.sax

Datos externos

Conectar o  java.net o  apache HTTP Client Consumir o  org.json o  org.w3c.dom o  org.xml.sax

¡TRUCAZO! Para tratar HTML como XML

tagsoup ¡Viene incluido!

Recursos

Recursos everywhere!

Enlaces

developers.android.com/design developers.android.com/develop youtube.com/user/androiddevelopers

App Clini, ADiA, ...

android-app-patterns.com androidniceties.tumblr.com androcode.es/tag/herramientas/

Enlaces

developers.android.com/design

Enlaces

developers.android.com/develop

Enlaces

androidniceties.tumblr.com

Enlaces

android-app-patterns.com

Enlaces

androcode.es/tag/herramientas/

Libros

¿Preguntas?