You are on page 1of 9

Estructura de un proyecto Android

Seguimos con el Curso de Programacin Android. Para empezar a comprender cmo se


construye una aplicacin Android vamos a echar un vistazo a la estructura general de un
proyecto tipo.
Cuando creamos un nuevo proyecto Android en Eclipse se genera automticamente la
estructura de carpetas necesaria para poder generar posteriormente la aplicacin. Esta
estructura ser comn a cualquier aplicacin, independientemente de su tamao y
complejidad.
En la siguiente imagen vemos los elementos creados inicialmente para un nuevo proyecto
Android:

Describamos los elementos principales.


Carpeta /src/
Contiene todo el cdigo fuente de la aplicacin, cdigo de la interfaz grfica, clases
auxiliares, etc. Inicialmente, Eclipse crear por nosotros el cdigo bsico de la pantalla
(Activity) principal de la aplicacin, siempre bajo la estructura del paquete java definido.

Carpeta /res/

Contiente todos los ficheros de recursos necesarios para el proyecto: imgenes, vdeos,
cadenas de texto, etc. Los diferentes tipos de recursos de debern distribuir entre las
siguientes carpetas:

/res/drawable/. Contienen las imgenes de la aplicacin. Se puede


dividir en /drawable-ldpi, /drawable-mdpi y /drawable-hdpi para
utilizar diferentes recursos dependiendo de la resolucin del dispositivo.

/res/layout/. Contienen los ficheros de definicin de las diferentes


pantallas de la interfaz grfica. Se puede dividir en /layout y /layoutland para definir distintos layouts dependiendo de la orientacin del
dispositivo.

/res/anim/. Contiene la definicin de las animaciones utilizadas por la


aplicacin.

/res/menu/. Contiene la definicin de los mens de la aplicacin.

/res/values/. Contiene otros recursos de la aplicacin como por


ejemplo cadenas de texto (strings.xml), estilos (styles.xml), colores
(colors.xml), etc.

/res/xml/. Contiene los ficheros XML utilizados por la aplicacin.

/res/raw/. Contiene recursos adicionales, normalmente en formato


distinto a XML, que no se incluyan en el resto de carpetas de recursos.

Como ejemplo, para un proyecto nuevo Android, se crean los siguientes recursos para la
aplicacin:

Carpeta /gen/

Contiene una serie de elementos de cdigo generados automticamente al compilar el


proyecto. Cada vez que generamos nuestro proyecto, la maquinaria de compilacin de
Android genera por nosotros una serie de ficheros fuente en java dirigidos al control de los
recursos de la aplicacin.

El ms importante es el que se puede observar en la imagen, el fichero R.java, y la clase


R.
Esta clase R contendr en todo momento una serie de constantes con los ID de todos los
recursos de la aplicacin incluidos en la carpeta /res/, de forma que podamos acceder
facilmente a estos recursos desde nuestro cdigo a traves de este dato. As, por ejemplo, la
constante R.drawable.icon contendr el ID de la imagen icon.png contenida en
la carpeta /res/drawable/. Veamos como ejemplo la clase R creada por defecto para
un proyecto nuevo:
1 package net.sgoliver;
2
3 public final class R {
4

public static final class attr {

public static final class drawable {


public static final int icon=0x7f020000;

7
8

}
public static final class layout {

9
public static final int main=0x7f030000;

10
}

11

public static final class string {

12

public static final int app_name=0x7f040001;

13

public static final int hello=0x7f040000;

14
15

}
}

16

Carpeta /assets/
Contiene todos los dems ficheros auxiliares necesarios para la aplicacin (y que se
incluirn en su propio paquete), como por ejemplo ficheros de configuracin, de datos, etc.
La diferencia entre los recursos incluidos en la carpeta /res/raw/ y los incluidos en la
carpeta /assets/ es que para los primeros se generar un ID en la clase R y se deber
acceder a ellos con los diferentes mtodos de acceso a recursos. Para los segundos sin
embargo no se generarn ID y se podr acceder a ellos por su ruta como a cualquier otro
fichero del sistema. Usaremos uno u otro segn las necesidades de nuestra aplicacin.
Fichero AndroidManifest.xml
Contiene la definicin en XML de los aspectos principales de la aplicacin, como por
ejemplo su identificacin (nombre, versin, icono, ), sus componentes (pantallas,
mensajes, ), o los permisos necesarios para su ejecucin. Veremos ms adelante ms
detalles de este fichero.

Componentes de una aplicacin Android

En la guia anterior vimos la estructura de un proyecto Android y aprendimos dnde colocar


cada uno de los elementos que componen una aplicacin, tanto elementos de software como
recursos grficos o de datos. En ste nuevo post vamos a centrarnos especficamente en los
primeros, es decir, veremos los distintos tipos de componentes de software con los que
podremos construir una aplicacin Android.
En Java o .NET estamos acostumbrados a manejar conceptos como ventana, control,
eventos o servicios como los elementos bsicos en la construccin de una aplicacin.
Pues bien, en Android vamos a disponer de esos mismos elementos bsicos aunque con un
pequeo cambio en la terminologa y el enfoque. Repasemos los componentes principales
que pueden formar parte de una aplicacin Android [Por claridad, y para evitar confusiones
al consultar documentacin en ingls, intentar traducir lo menos posible los nombres
originales de los componentes].
Activity
Las actividades (activities) representan el componente principal de la interfaz grfica de
una aplicacin Android. Se puede pensar en una actividad como el elemento anlogo a una
ventana en cualquier otro lenguaje visual.
View
Los objetos view son los componentes bsicos con los que se construye la interfaz grfica
de la aplicacin, anlogo por ejemplo a los controles de Java o .NET. De inicio, Android
pone a nuestra disposicin una gran cantidad de controles bsicos, como cuadros de texto,
botones, listas desplegables o imgenes, aunque tambin existe la posibilidad de extender la
funcionalidad de estos controles bsicos o crear nuestros propios controles personalizados.
Service
Los servicios son componentes sin interfaz grfica que se ejecutan en segundo plano. En
concepto, son exactamente iguales a los servicios presentes en cualquier otro sistema
operativo. Los servicios pueden realizar cualquier tipo de acciones, por ejemplo actualizar

datos, lanzar notificaciones, o incluso mostrar elementos visuales (activities) si se necesita


en algn momento la interaccin con del usuario.
Content Provider
Un content provider es el mecanismo que se ha definido en Android para compartir datos
entre aplicaciones. Mediante estos componentes es posible compartir determinados datos de
nuestra aplicacin sin mostrar detalles sobre su almacenamiento interno, su estructura, o su
implementacin. De la misma forma, nuestra aplicacin podr acceder a los datos de otra a
travs de los content provider que se hayan definido.
Broadcast Receiver
Un broadcast receiver es un componente destinado a detectar y reaccionar ante
determinados mensajes o eventos globales generados por el sistema (por ejemplo: Batera
baja, SMS recibido, Tarjeta SD insertada, ) o por otras aplicaciones (cualquier
aplicacin puede generar mensajes (intents, en terminologa Android) broadcast, es decir,
no dirigidos a una aplicacin concreta sino a cualquiera que quiera escucharlo).
Widget
Los widgets son elementos visuales, normalmente interactivos, que pueden mostrarse en la
pantalla principal (home screen) del dispositivo Android y recibir actualizaciones
peridicas. Permiten mostrar informacin de la aplicacin al usuario directamente sobre la
pantalla principal.
Intent
Un intent es el elemento bsico de comunicacin entre los distintos componentes Android
que hemos descrito anteriormente. Se pueden entender como los mensajes o peticiones que
son enviados entre los distintos componentes de una aplicacin o entre distintas
aplicaciones. Mediante un intent se puede mostrar una actividad desde cualquier otra,
iniciar un servicio, enviar un mensaje broadcast, iniciar otra aplicacin, etc.

You might also like