Creación de aplicaciones Android, parte 2: Conceptos iniciales

Escrito por Dr. SeROne el 03-11-2009, 06:23

Tras preparar el entorno, vamos a generar un proyecto -típico “Hola mundo”- con el wizard de Eclipse. Con él podremos ver los conceptos iniciales de una aplicación Android, así como todos los componentes de los que debe constar.

Antes de poder seguir con nuestro desarrollo (que pronto revelaremos ;) ), tenemos que comprender todos éstos conceptos básicos, pues serán el pilar de todas las explicaciones posteriores.

Comenzamos:

Componentes de un proyecto Android

Cuando generamos el proyecto con el wizard de Eclipse veremos que h generado una estructura de directorios y archivos, que será igual para todas las aplicaciones Android que desarrollemos, por lo que será aconsejable familizarizarse con ella y aprender qué significa cada uno de los componentes:

  • Directorio “src”: Contiene los archivos Java con el código fuente de los componentes de la aplicación.
  • Directorio “gen”: Contiene los archivos Java que el propio SDK autogenera, y que nos servirán para acceder a los recursos desde el código fuente de las actividades.
  • Directorio “res/drawable”: Contiene los archivos gráficos para insertar en las pantallas de nuestra aplicación.
  • Directorio “res/layout”: Contiene el diseño de todas ls pantallas de la aplicación.
  • Directorio “res/values”: Contiene todas las cadenas que se muestran en la aplicación, para que luego añadir traducciones sea un juego de niños :)
  • Archivo “AndroidManifest.xml”: Un archivo importantísimo que describe la aplicación, los permisos necesarios, etc.

Vamos  a explicar con más detalle las tripas de un proyecto Android.

Estructura de una aplicación Android

Una aplicación Android puede tener cuatro tipos de componentes diferentes, que se irán instanciando a lo largo de todo el ciclo de vida de la aplicación. Son los siguientes:

  • Actividad: Representa un elemento de la interfaz de la aplicación. Normalmente cada interfaz consta de una sola ventana, aunque puede contener más si es necesario (para mostrar detalles, popups informativos, etc). La parte básica de toda aplicación.
  • Servicios: Son los componentes de la aplicación que se ejecutan en background, sin necesidad de que el usuario interactúe con ellos. No tienen interfaz de usuario.
  • Receptor de broadcasts: Es un receptor de eventos producidos por otras aplicaciones o por el sistema operativo, como información de batería baja, etc. Tampoco tienen interfaz de usuario.
  • Proveedor de contenido: Su función es poner a disposición de otras aplicaciones los datos que nosotros deseemos publicar, para poder comunicar aplicaciones.

De momento, tan sólo usaremos actividades, así que vamosa verlas con más detalle

Ciclo de vida de una actividad

El punto de entrada de una aplicación normalmente será una actividad (es decir, la pantalla que vemos cuando ejecutamos la aplicación). Ésta actividad se compone de dos elementos: la interfaz (que estará en res/layout) y el código fuente (que estará en src).

Una actividad tiene un ciclo de vida muy definido, heredado de los objetos padre del SDK, y que será igual para todas las actividades. Algunos de los métodos del ciclo de vida son los siguientes:

  • void onCreate(Bundle savedInstanceState): Creación de la Actividad. Puede recibir información de estado de instancia, por si se reanuda desde una instancia pausada anterior.
  • void onStart(): Inicio de la actividad recién creada.
  • void onRestart(): Reinicio de una actividad tras una pausa.
  • void onPause(): Método ejecutado antes de pausar la aplicación
  • void onStop(): Fin de la actividad.
  • void onDestroy(): Método ejecutado antes de destruir del todo la actividad.

Tomo prestado el interesante gráfico de la documentación oficial:

Ésta será la base del funcionamiento de nuestra aplicación, ahora veremos cómo interactuar con el usuario gracias a la interfaz que asignemos a cada actividad.

Interfaz de usuario

La interfaz de usuario se define en los archivos XML del directorio res/layout. Cada pantalla tendrá un XML diferente. Dentro del archivo la interfaz se definirá más o menos como crearíamos una página HTML (con muchas diferencias, pero vamos, la base es la misma).

El plugin ADT para Eclipse nos da un editor gráfico con el que podremos componer pantallas fácilmente, pero siempe es conveniente conocer un poco el código. El archivo generado por el wizard es el siguiente:

<?xml version=”1.0″ encoding=”utf-8″?>

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
>

<TextView
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”@string/hello”
/>

</LinearLayout>

Hay dos tipos de controles:

  • Layouts: Son los diferentes tipos de área donde colocar los controles. Cada uno define una forma diferente de mostrar los controles.
  • Controles: Son controles en sí, elementos de interacción con el usuario, como botones, entrada de texto, etiquetas…

Toda la lista de controles y layouts disponibles está en la documentación oficial, aquí.

Ahora toca asociar un archivo de layout con una actividad. Viendo el código del wizard, podemos ver que es algo tan sencillo como escribir lo siguiente en el código de la Actividad:

@Override public void onCreate(Bundle savedInstanceState)
{

super.onCreate(savedInstanceState);
setContentView(R.layout.main);

}

Así de facil :) El objeto R se autogenera a medida que generamos recursos, por lo que siempre estará actualizado y nos permitirá referenciar nuestros recursos según los vayamos definiendo.

Manifiesto Android

Todos los proyectos Android tienen éste archivo que, entre otras cosas que ahora no usaremos, pero que veremos con el tiempo, nos dará la posibilidad de pedir los permisos que vayamos necesitando, y definirá la actividad inicial que se ejecutará.

Los permisos de aplicación son una restricción que impone la máquina virtual Dalvik (el corazón del sistema Android sobre el que se ejecutan nuestras aplicaciones), y es un estupendo mecanismo para que una aplicación que instalemos no nos soprenda con las cosas que hace. Como ya hemos visto, cada vez que se instala una nueva aplicación, ésta nos pedirá una serie de permisos. Si no estamos de acuerdo, sencillamente podremos evitar la instalación, y con ello evitaremos efectos no deseados.

Es muy importante saber pedir permisos, pero también lo es que sólo pidamos los necesarios, para no asustar a los usuarios con privilegios que en realidad no vamos a necesitar.

Todos los interiores de éste importantísimo archivo los iremos viendo con el tiempo.

Conclusión

Con todo esto ya podemos empezar a generar nuestra aplicación, así que ya sabéis, ahora os toca pensar qué es lo que queréis que haga la vuestra. ¡Al final del tutorial todos podremos compartirlas!

Related posts:

  1. Creación de aplicaciones Android, parte 1: Preparando el entorno

4 to “Creación de aplicaciones Android, parte 2: Conceptos iniciales”


  1. kix2902 dice:

    Acabo de llegar a esta web buscando algo sobre el teclado que implementa HTC en el Sense y llegue a este post.
    Andaba buscando algo que me ayudara a crear una aplicacion para Android que llevo pensando desde hace tiempo, se trata de un port de un juego que desarrolle el año pasado para pc y que me gustaria ver en el Market.
    Espero que acabes esta serie de tutos para poder acabar yo mi juego y que todo el mundo lo disfrute en cualquier lugar del mundo

  2. Dr. SeROne dice:

    Agradezco tus palabras! Suscribete al feed sel blog y te enterarás al instante de todas las nuevas lecciones que vaya poniendo. Y tengo varias en la recámara, esperando se publicadas. ¡No te las pierdas!

    ¡Suerte con tu proyecto! Espero que nos cuentes tus avances :)

  3. kristhian dice:

    hola como estas soy kristhian muy interesante

    perdon mi ignorancia q son cada uno de los archivos q contiene android zimage, rootfs, initrd, sistem, para saber q archivos debo selecionar si me pudieras enviar a mi correo te lo agradeceria mucho please
    kristhianortiz_7@hotmail.com

  4. Dr. SeROne dice:

    Esos archivos son un sistema android completo, y no tienes que seleccionar ninguno de ellos. Si deseas instalar un sistema android nuevo has de instalar un arranque personalizado y hacerlo desde allí (rootear el móvil), si sólo deseas desarrollar aplicaciones tampoco necesitas nda de eso, pues el compilador generará un archivo APK que será lo que instalarás en el móvil. Espero haberte ayudado. ¡Saludos!


2 Trackbacks/Pingbacks

  1. Creación de aplicaciones Android, parte 3: Gestionando eventos de la interfaz | Diario de un androide 17 03 10
  2. Creación de aplicaciones Android, parte 4: Servicios « Diario de un androide 21 06 10

¡Deja tu opinión!


  • Diario de un androide