Professional Documents
Culture Documents
0. Empezando
Lo primero ser saber que para programar aplicaciones nativas en Android,
deberemos aprender a programar en el lenguaje Java, conociendo
la programacin orientada a objetos.
Lo primero que debemos hacer es preparar nuestro entorno de desarrollo y saber
dnde conseguir cualquier informacin. Para ello, lo primero es saber dnde
est toda la informacin para los desarrolladores de Android. Google nos
tiene preparada una web para ello, pero debemos saber que toda la informacin
est en ingls:
Web de desarrolladores de Android
Una vez en la web, basta con que le demos al link que dice Download the SDK, y
nos bajar una versin del entorno de desarrollo Eclipse, personalizada para
Android y ya preparada con el ltimo SDK, el plugin ADT, as como
emuladores sobre los que poder testear nuestra aplicacin.
En el pasado Google I/O (2013), anunciaron tambin el nuevo IDE Android
Studio, el cual podemos tambin utilizar en lugar de Eclipse, pero debemos
saber que an estn en fase beta. Desde la misma pgina podrs acceder a la
informacin al mismo.Nosotros ya hemos hablado antes de este nuevo IDE,
pero en este tutorial utilizaremos Eclipse.
Una vez abrimos nuestro entorno de desarrollo, podemos descargarnos todas
las versiones de Android si queremos, as como otros paquetes extra. Para
ello utilizaremos el Android SDK Manager.
Por otro lado, podremos crear tantos emuladores de dispositivos Android como
queramos: con distintos tamaos de pantalla, distintas versiones de Android
Para ello, debemos utilizar el Android Virtual Device Manager (ADB), al cual
podemos acceder desde Eclipse o desde la va de comandos de nuestro sistema
operativo:
DDMS
Llegados a este punto, nuestro ordenador est preparado para crear nuestra
primera aplicacin Android. Para ello, nos basaremos en los pasos que Google
nos recomienda seguir para una sencilla app. Toda esta informacin la
podremos encontrar en unos trainings que Google nos tiene preparados:
Formacin (Trainings) sobre Android de Google
Creando un nuevo proyecto Android
Nuestra seccin hoy terminar siguiendo el segundo enlace, donde crearemos un
nuevo proyecto Android. Para ello, seguiremos los siguientes pasos:
1. Haz click en New
2. En la ventana que aparece, abrir la carpeta Android y elegir Android
Application Project
3. En la siguiente ventana, debemos introducir el nombre de nuestra
aplicacin, el nombre del proyecto y el nombre del paquete (ste ser
unico para nuestra app, pues sera el ID que Google Play utilizar para
identificar la aplicacin). Tambin introduciremos la versin de Android
mnima requerida, as como la versin con la que compilaremos (generar
nuestra aplicacin a partir del cdigo) nuestra aplicacin.
4. Tras rellenar todos los campos segn necesitemos o queramos, nos vamos
a la siguiente pantalla, donde dejaremos las opciones seleccionadas por
defecto.
5. En la siguiente pantalla, podremos crear un icono para nuestra aplicacin.
Para ello, sera ideal echar un vistazo a las guas de diseo de Android con
respecto a lo que a iconos se refiere.
6. Por ltimo, seleccionaremos una plantilla de actividad sobre la que empezar
a trabajar. Podemos seleccionar Blank Activity, que bsicamente es una
pantalla vaca.
7. Finalizamos el asistente.
Con esto, tendremos nuestro particular Hola mundo con el que siempre
empezamos a programar cuando utilizamos una nueva API (tambin vimos
cmo crear un Hola Mundo en AndroidStudio). Para ejecutarlo, basta con
tener un dispositivo real conectado o lanzar un emulador y hacer click en el
botn Run (un crculo verde con el icono Play en blanco).
1. Fundamentos de una aplicacin
Lo primero que tenemos que mencionar es que las aplicaciones Android estn
escritas en el lenguaje de programacin orientado a objetos Java. El SDK de
Android tiene una serie de herramientas que permitirn compilar el cdigo,
incluyendo los datos y los recursos (de los que hablaremos a continuacin), y lo
meter todo en un fichero APK, o tambin conocido como paquete Android.
Este fichero ser nuestro instalador.
Una vez instalada una aplicacin, cada una de ellas tiene su propio sistema de
seguridad, de tal modo que:
Todos los recursos irn bajo la carpeta /res. Pero, qu recursos son los que
podemos incluir? Los siguientes:
Animaciones
Colores
Imgenes (Drawable)
Mens
Estilos
Para ello, deben ir en una estructura de carpetas especfica, de forma que por
ejemplo para aadir cadenas de texto en espaol utilizaramos la carpeta
/res/values-es o /res/drawable-xxhdpi para Drawables para pantallas de alta
resolucin.
A continuacin podis ver un diagrama de flujo de cmo Android elige el recurso
adecuado:
En este caso, un LinearLayout nos pondr elementos uno detrs de otro (en este
caso al ser su orientacin vertical, uno debajo de otro). A continuacin un
TextView que de ancho y alto ocupa lo que necesite (wrap_content), con el
texto Hello, I am a TextView. Y similar para el botn. Cada uno con su
identificador nico.
Si queremos hacernos buenos a la hora de hacer layouts, lo ideal es
que empecemos trabajando con el editor grfico de eclipse o Android
Studio, pero vayamos comprobando cmo queda el XML. Conforme pase el
tiempo, os daris cuenta que a veces ser ms rpido escribir directamente en el
XML.
Cuando vamos a definir un men en una de nuestras Actividades, ste tambin
se define a travs de un XML. Para ms informacin, os recomiendo visitar
el link. Aqu os dejo un ejemplo:
Y como queda tras utilizarlo con estilos, donde el estilo CodeFont podramos
reutilizarlo en otras Views, o si decidiramos cambiarlo, podramos cambiarlo a
todos a la vez:
3. La clase Activity
Una Actividad es uno de los componentes de una aplicacin, concretamente el
encargado de ofrecer una pantalla con la que los usuarios pueden
interactuar, con el nico objetivo de hacer algo. Es por ello que lleva asociada
una interfaz de usuario.
De hecho, una aplicacin suele estar compuesta por varias actividades que estn
vinculadas unas a otras de alguna forma. Generalmente, toda aplicacin tiene
La Actividad A lanza B
Le damos a Back
Como connotacin final sobre la pila backstack, mencionar que las actividades
pueden ser instanciadas ms de una vez.
Para crear una actividad, basta con que creemos una clase que herede de la
claseActivity. Adems de heredar de esta clase, deberemos sobreescribir
Para terminar una actividad, basta con que llamemos al mtodo finish.
Como componente de una aplicacin que es, la actividad deber ser
registrada en el fichero Manifest. Para ello, utilizaremos la
etiqueta <activity> dentro de la etiqueta <application>. Adems, dentro de la
actividad, podremos declarar todos los <intent-filter> que queramos, para
identificar nuestra actividad y las acciones que puede realizar. Como ejemplo
bsico, la actividad considerada main, deber llevar la categora LAUNCHER y la
accin MAIN:
Pero este mtodo slo se disparar ante los eventos que hayamos
registrado en el Manifest, mediante el atributo android:configChanges. A
continuacin puedes ver un ejemplo de registro de eventos de teclado y de
orientacin del dispositivo:
Por ltimo, mencionar que podemos hacer uso de los Loaders, cuando
queramos poder precargar de forma asncrona (tanto en actividades como en
fragmentos) informacin proveniente de algn ContentProvider.
En el siguiente enlace tenis un ejemplo perfecto completo para comprender
mejor las actividades y sus ciclos de vida.
4. La clase Fragment
Con la llegada de las tablets, las actividades parecan no satisfacer todas las
necesidades que stas traan consigo. Por qu? La respuesta es sencilla: ahora
tenemos ms pantalla para mostrar ms datos, pero no nos gustara tener que
rehacer el cdigo haciendo actividades totalmente nuevas. Con toda esta idea,
surge el conceptofragmento desde Android HoneyComb 3.0 (API 11).
Un fragmento representa una porcin de interfaz de usuario o un
comportamiento en una actividad. De esta forma, podemos combinar varios
fragmentos en una nica actividad, de tal forma que podemos crear un panel
multi interfaz y reusar un fragmento en diferentes actividades. Quin no ha visto
el tpico caso de datos maestro (izquierda) esclavo (derecha) en una tablet, que
en su versin mvil son dos pantallas independientes, la cual la primera nos lleva
a la segunda?
Por ltimo, mencionar que Google, para hacernos las cosas ms fciles, nos
ofrece algunos fragmentos particulares ya creados, de tal forma que nos
resulta mucho ms fcil desarrollar cierta funcionalidad. Entre ellos, encontramos:
5. View personalizada
Como programadores, la plataforma Android est constituida en un modelo
basado en unos componentes muy potentes y sofisticados, de forma que
podremos prcticamente crear cualquier interfaz grfica posible. Para ello, nos
basaremos en las clases fundamentales de los layouts: las
clases View y ViewGroup. La clase View representa el bloque bsico para
cuando queremos crear una interfaz grfica. Por su parte, un ViewGroup no es
ms que una View especfica que nos permite contener otras Views. Estas dos
clases sern los componentes centrales de cualquier interfaz Android.
La API de Android nos ofrece de serie una variedad de Views (en la API
llamadas widgets) y ViewGroups (layouts) sobre los que podemos empezar a
trabajar. Estos son algunos de los ejemplos que podemos encontrar:
Puesto que los layouts son algo de lo ms importante para nosotros, aqu tenis
toda la informacin respecto a ellos.
Con todo esto, ya podramos crear una interfaz grfica, mediante la combinacin
de los mismos.
Imaginemos que queremos sobreescribir una vista que ya exista. En ese caso
deberemos:
1. Definir la nueva vista
2. Inicializar la clase
3. Encarganos de los mtodos que debemos sobreescribir
4. Usar la nueva vista
Aqu podis ver un ejemplo perfecto de una nueva vista personalizada. En este
caso se trata de un grfico por sectores.
6. Adaptadores (Adapter)
Hasta ahora hemos visto cmo crear interfaces de usuarios sencillas, donde
nosotros indicbamos el layout a utilizar e incluso metamos nuestras propias
vistas personalizadas.
Pero, y si queremos repetir una interfaz repetidas veces segn unos datos
concretos? Es el caso de una lista de valores, una galera Y aqu es donde
entran en juego los adaptadores.
7. La clase Intent
Data (Datos): Ser una URI que haga referencia a los datos que queremos
utilizar, as como el tipo de datos que son (MYME type).
La pregunta que nos podramos hacer llegado este punto es: cmo sabe
Android qu acciones realiza cada componente de aplicacin? Y aqu es
donde juega un papel crucial el fichero Manifest. En l, ya hemos comentado que
debemos dejar registrados todos los componentes que forman parte de la
aplicacin. Pero no slo eso. Tambin deberemos aadir dentro de cada
componente en el Manifest el concepto de Intent Filter. Este filtro nos permite
indicar cul es la capacidad de dicha componente. Concretamente, un Intent
Filter puede contener los siguientes campos completos:
Accin
Datos
Categora
Con esto damos por terminados los conceptos de hoy, donde ya hemos
visto cmo comunicarnos entre aplicaciones, as como solicitar al sistema
operativo alguna accin en concreto.
La semana que viene llegaremos al ecuador de la seccin. Pero mientras
tanto, has empezado ya a desarrollar tu primera app?
Nuevo domingo, nuevo captulo de Aprende Android en 20 conceptos. Con
este artculo de hoy llegamos al ecuador de la seccin, habiendo hablado ya de
10 de los 20 conceptos que componan el ndice inicial.
Antes de empezar con el concepto 9, cabe mencionar que hoy lo que
pretendemossolucionar, tal como hemos comentado antes, es el problema del
almacenamiento persistente de datos en nuestra aplicacin. Pero adems
necesitamos decidir si estos datos son privados para nuestra aplicacin o
pueden ser compartidos por otras aplicaciones.
Para ello, Android nos da las siguientes opciones:
Aparte de todo esto, Android nos proporciona una forma adicional de mostrar
nuestros datos privados a otras aplicaciones, con el uso de un Content Provider.
Pero eso es algo de lo que hablaremos ms adelante.
privada, mediante SQLite. Estas bases de datos sern privadas para cada
aplicacin y ninguna otra tendr acceso a estos datos.
La forma recomendada de crear una nueva base de datos SQLite es crear una
subclase de SQLiteOpenHelper y sobreescribir el mtodo onCreate, en el cual
podemos ejecutar comandos SQLite para crear las tablas necesarias en la base
de datos. A continuacin podemos ver un ejemplo:
Para tener un objeto de la clase creada, basta con que usemos el constructor que
hayamos definido. Una vez tengamos el objeto, escribir y leer de la base de
datosllamar a los mtodos getWritableDatabase y getReadableDatabase,
respectivamente. Ambos mtodos devolvern un objeto de la
clase SQLiteDatabase que representa la base de datos y nos provee los
mtodos para las operaciones SQLite que queramos.
Para ejecutar operaciones SQLite, utilizaremos los
mtodos SQLiteDatabasequery, que acepta varios parmetros para nuestra
consulta, tales como la tabla, seleccin En el caso de que queramos consultas
ms complejas, tambin podemos utilizar la clase SQLiteQueryBuilder.
Pero hay que tener cuidado, pues el servicio se ejecutar en la hebra principal
de su proceso padre, por lo que si vamos a hacer un trabajo intensivo en la
CPU, deberamos crear una nueva hebra.
Cules son los principios bsicos de los servicios? Los siguientes:
En el siguiente link podrs ver algunos ejemplos de buen uso de los servicios.
Servicios asociados
Callbacks de servicios
Por otro lado estn las hebras (Threads). Cuando la aplicacin es lanzada, el
sistema slo crea una hebra principal para la interfaz de usuario (UI Thread).
Pero, qu ocurrira cuando queramos hacer un trabajo intenso?
Estaremos bloqueando la hebra de la interfaz de usuario? La respuesta es
s, y es por eso que para trabajos intensos debemos crear nuestras propias
hebras.
Bsicamente, hay dos reglas bsicas:
Hebra secundaria
o
Una Content URI es una URI que identifica datos en un proveedor. Incluye el
nombre simblico del proveedor completo (autoridad) y un nombre que apunta a
una tabla (path). Cuando llamamos a un mtodo del cliente, estos datos son uno
de los argumentos.
Cuando Google redise Android, incluyendo la interfaz Holo, entre otras cosas
trajo consigo el ActionBar. ste es una caracterstica de la ventana
que identifica la localizacin del usuario en la aplicacin y nos proporciona
tanto acciones posibles a realizar por el usuario, como modos de
navegacin. Podramos resumir sus funciones clave en las siguientes:
Una vez aadidos los elementos, basta con gestionar los eventos al hacer click
sobre cada elemento de men:
Adems, podremos hacer uso del Split ActionBar, que bsicamente consiste en
que si falta espacio se aada una segunda barra donde ya dispondremos de ms
espacio. Para ello tendremos que aadir la opcin uiOptions =
splitActionBarWhenNarrow a cada actividad declarada en nuestro Manifest o
directamente a la aplicacin entera. Pero hay que tener en cuenta que esta
opcin fue aadida en la API 14 de Android, y si queremos soportarlo en
versiones anteriores, deberemos aadir un <meta-data> como hijo de cada
actividad que declare dicho valor.
Otra cosa que podemos aadir en el ActionBar es que el icono de la izquierda (el
icono de la aplicacin) nos permita navegar a la pantalla justamente superior.
Para ello, deberemos llamar al mtodo setDisplayHomeAsUpEnabled. Otra
opcin es declarar en el Manifest para cada actividad cul ser su actividad padre
(slo disponible desde Android 16).
Tambin podemos aadir un Action Provider, como por ejemplo es el caso del
tpico botn que podemos ver para compartir:
Otro elemento tpico son las pestaas, para las cuales necesitaremos:
1. Implementar la interfaz ActionBar.TabListener
2. Instanciar ActionBar.Tab para cada pestaa y asignar el escuchador con el
mtodo setTabListener. Con setTitle y setIcon personalizaremos la pestaa.
3. Aadir cada pestaa al ActionBar a travs del mtodo addTab
Otro elemento que podemos aadir es una navegacin desplegable. Para ello:
15. Notificaciones
Una notificacin es un mensaje que podemos mostrar al usuario fuera de la
interfaz grfica normal de nuestra aplicacin. Para ello, Android cuenta con
una rea de notificacin. Adems, podremos ver detalles de las notificaciones
Vista grande: Disponible desde Android 4.1, esta vista aparecer cuando
la notificacin es expandida. Tendr la misma informacin que la anterior,
ms una informacin adicional.
Pero todo este mundo de las notificaciones est cogiendo tal importancia, que
llega un punto donde gestionar de forma ptima las notificaciones es vital. Y en
esa gestin tambin debemos analizar cuntas notificaciones dar nuestra
aplicacin, con qu finalidad y si sern muchas, pocas, tiles
As que, por favor, analizad muy bien cuando queris mostrar una notificacin,
pues la mala eleccin de stas puede provocar incluso que un usuario desinstale
nuestra aplicacin.
17. Animaciones
Lo primero de todo es darle vida a nuestra aplicacin. Para ello podremos animar
nuestras aplicaciones. Para ello, Android nos provee dos sistemas de
animaciones:
Animacin de vista: Slo puede ser usada por objectos de la clase View.
Es relativamente fcil configurar y ofrecer animaciones en ellas y dar un
valor aadido a cada vista de nuestra pantalla.
Interpolacin de tiempo
Sets de animadores
Las clases principales que entran en juego para todo este sistema son las
siguientes:
18. Widgets
Si algo diferencia especialmente a Android del resto de plataformas, es el sistema
de Widgets que tiene implementado. Si echamos un ojo a nuestro telfono mvil,
veremos seguramente la cantidad de widgets que tenemos disponibles gracias a
las aplicaciones que tenemos instaladas.
Pero, qu es un widget? No es ms que una aplicacin en miniatura que
puede ser incluida en otras aplicaciones y recibir actualizaciones peridicas,
como por ejemplo la pantalla principal.
El mundo de los widgets es algo muy denso y que puede ser tan complejo como
nuestro widget queramos que sea. A pesar de ello, he de decir que, desde mi
punto de vista, los mejores widgets son aquellos muy simples pero con una
funcionalidad muy bien definida, y es que no debemos olvidar que un widgets es
para algo rpido e instantneo, no para meter toda la funcionalidad de una
aplicacin en una pantalla ms pequea.
Para crear un widget, necesitaremos a modo de resumen:
Para ello, tendremos que declarar nuestro widget en el Manifest (recordad, lo que
no est en el Manifest, no existe para Android):
Podis ver los ejemplos de Android, pero antes de ello mi recomendacin pasa
por leer todo lo referente al diseo de widgets, para no caer en errores que
puedan hacer de nuestro widget un quebradero de cabeza al usuario.
Con esto estaran todos los conceptos, y slo nos queda un artculo ms con
informacin adicional y conceptos menores a tener en cuenta.
Pero a pesar de que acabe esta seccin en una semana, seguiremos contando
cosas sobre programacin.
Hoy, sin embargo, me dispongo a escribir los conceptos 19 y 20. Se tratan
bsicamente de dos puntos con enlaces de referencia y sitios de inters, pues los
conceptos importantes en s ya los hemos ido viendo a lo largo de las semanas.
Y con esto, llegarn las ltimas palabras bajo esta seccin.
Y este es el concepto que nunca quiere uno que llegue: el ltimo. Y por eso
mismo, aqu no pretendo explicar nada nuevo, pues como ya hemos comentado
la base ya est. Simplemente incluiremos una lista de enlaces de inters que nos
servirn de gran ayuda en diferentes fases del desarrollo de nuestra aplicacin, a
modo de resumen de toda la seccin.
En primer lugar, siempre est bien tener un glosario con los trminos ms
importantes de Android, simplemente para refrescarnos la memoria.
Tambin est bien tener una gua sobre recomendaciones a seguir de la mano
de la mismsima gran G.
Pero siempre teniendo presente una cosa: nuestra particular biblia para
programar Android es y debe ser siempre su documentacin oficial.
Aparte de eso, siempre deberemos tener presente que hay que posicionar
nuestra aplicacin dndole calidad y elegancia. Para ello, tenemos la gua de
diseo de Android.
Y si ya tenemos lista nuestra aplicacin para ser publicada, es momento de
distribuirla y ver cmo podemos llegar a ganar dinero (si es lo que pretendemos),
monetizando nuestra aplicacin. Y dnde estar la mejor informacin al
respecto? Efectivamente, en la gua de distribucin de aplicaciones de
Android hecha por Google.
Una vez hecho esto, slo nos queda esperar a los usuarios, su feedback y
mejorar la aplicacin. Aadir funcionalidad nueva. Pero tambin promocionarla. Y
para ello tendremos herramientas que podemos utilizar, como puede ser
el Device Art Generator, una web donde podremos incrustar pantallazos de
nuestra aplicacin en un marco de un dispositivo determinado, quedando
totalmente profesional.
Para todo lo dems, Googlear!
Con esto termina esta seccin que esperamos os haya gustado mucho y
resultado de utilidad. No obstante, seguiremos publicando nuevos artculos sobre
programacin, as que estad atentos!