Aprende más sobre este tema con el curso de Android.

Android, el sistema operativo móvil de Google, como sabéis es de código abierto y gratuito por lo que cualquier persona o empresa pueda cogerlo, modificarlo y usarlo en sus productos. Esta apertura va a provocar que haya más de 20 móviles con Android a finales de año.

Incluso recientemente hemos visto que Acer va a lanzar un netbook con una versión modificada de Android. Por si faltan excusas para aprender también deciros que Ubuntu ha financiado un proyecto que permitirá ejecutar programas de Android en este famoso sistema operativo.

Requisitos

  • Android está hecho en Java+XML, siguiendo el patrón MVC (Model-View-Controller).
  • Bájate el SDK
  • El mejor IDE para programar para Android es Eclipse (multiplataforma), pero puedes usar el que quieras, solo que tendrás menos facilidades. En los artículos usaremos Eclipse.
  • Bájate el plugin de Android para Eclipse (ADT).

En estas fáciles instrucciones podrás completar los pasos previos.

Creando un nuevo proyecto

La mejor forma de conocer un sistema es probándolo asi que vamos a crear el proyecto y por el camino vamos explicando cómo funciona Android.

1_01_new-project

Una vez instalado el plugin, creamos el nuevo proyecto de Android (File > New > Project > Android Project). Damos a siguiente:

1_02_projectname

  • Project name: HolaMundo
  • Package name: com.example.holamundo
  • Create Activity: HolaMundo
  • Application name: Hola Mundo

Aunque he puesto los mismos nombres en los 4 sitios no tiene por qué coincidir, como sabréis. El nombre de la aplicación es lo que veréis en el móvil, las actividades son los controladores de Android, el nombre del paquete es algo interno y el proyecto es lo que veréis en Eclipse. Finalizamos y podremos ver el siguiente árbol de archivos

1_03_tree

Voy a explicar la estructura:

  • /src – Aquí se encuentran las actividades (controladores recuerdo), clases y un archivo que se llama R.java. Este archivo no se debe tocar nunca, Android lo actualiza automáticamente pero si lo veis os encontraréis con variables y posiciones.
  • /Android Library – Eclipse referencia al sdk de Android. No mováis nunca el sdk de sitio o si lo hacéis recordad cambiar la dirección
  • /assets – Aquí se puede incluir archivos varios (música, pdfs, zips, rars)
  • /res/drawable – Todas las imágenes van en este directorio
  • /res/layout – Todas las vistas van aquí
  • /res/values – En el archivo strings.xml podemos poner variables que luego sustituiremos en las vistas
  • AndroidManifest.xml – Este archivo es muy importante porque recoge todas las actividades y algunas configuraciones del proyecto.

1_04_runas

Antes de seguir vamos a ejecutar el proyecto, y para eso damos a Run As y elegimos Android Application. Si instalasteis todo bien saldrá el emulador, cargando iniciando Android (tarda un poquito). Lo desbloqueamos dando a Menú, y ya puedes ver la aplicación más básica que se hace en todos los lenguajes, nuestro Hola Mundo.

1_05_holamundo

Si quieres puedes investigar los programas que trae el emulador, está bastante bien conseguido; aunque para mi gusto faltan varios detalles como girar el teléfono en posición horizontal. A continuación veremos cómo ha funcionado el programa.

Entendiendo el Hola Mundo

Gracias al plugin de Android, no hemos programado nada y ya tenemos el programa básico. Pero como hemos visto antes en la estructura, se han creado unos cuantos archivos. Vamos a ir paso a paso por cada uno de ellos.

 // AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.holamundo"
      android:versionCode="1"
      android:versionName="1.0.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".HolaMundo"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>  

Supongo que estaréis familiarizados con xml, si no, no os preocupéis, es muy fácil de entender. Podemos ver como crea un manifesto con el paquete y la versión de Android. Contiene la aplicación que hemos creado. android:icon="@drawable/icon" coge la imagen llamada icon.png del directorio /res/drawables y la asigna como icono. Esto es lo que véis en el menú de aplicaciones. Lo mismo sucede con android:label="@string/app_name", sustituye la variable app_name por su valor en el archivo:

 // res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, HolaMundo</string>
    <string name="app_name">Hola Mundo</string>
</resources>
 

Volviendo a AndroidManifest.xml, vemos que dentro de application se encuentra la actividad principal android:name=".HolaMundo", que corresponde con un punto más el nombre de la clase java en src/com.example.holamundo. El resto son detalles más profundos. Asi que Android ejecuta esa clase, vamos a verla:

 // src/com.example.holamundo/HolaMundo.java
package com.example.holamundo;

import android.app.Activity;
import android.os.Bundle;

public class HolaMundo extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
	  // Inicializa la actividad
        super.onCreate(savedInstanceState);
	  // Asignamos la vista
        setContentView(R.layout.main);
    }
} 

Crea una actividad llamada HolaMundo con un único método que sobreescribe al de la clase que extiende. Vemos como setContentView pasa como parámetro R.layout.main que representa a /res/layout/main.xml. Pero como dije antes, todo las referencias a archivos y variables pasan por la clase R.java que Android se encarga de ajustar automáticamente. Veamos la vista

 // res/layout/main.xml
<?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> 

Como podéis ver vuelve a ser un xml y es que Google ha elegido usar xml para representar las vistas. LinearLayout es un tipo de layout que muestra los elementos uno debajo de otro. Tiene orientación vertical y ocupa toda la pantalla tanto a lo alto como a lo ancho.

Dentro podemos ver un campo de texto (TextView) cuyo texto se encuentra en el archivo strings.xml visto antes.

Finalizando

Hemos visto paso por paso lo que hace Android para ejecutar un sencillo Hola Mundo. Lo importante es:

  • AndroidManifest.xml contiene todas las actividades indicando cuál se ejecuta primero.
  • Todas las actividades y clases se encuentran en src. La actividad HolaMundo usa el layout main.xml
  • Todos los layouts están en res/layout. Se programan en xml siguiendo las etiquetas del SDK de Android.
  • En cualquier sitio podemos referenciar a variables del fichero strings.xml. Esto es muy útil para aplicaciones en varios idiomas.

En el siguiente capítulo conectaremos otra aplicación con la base de datos, y aprenderemos más como se manejan los modelos y diversas vistas. Si tenéis cualquier sugerencia para mejorar y hacer más útiles estos tutoriales, no tenéis más que hacerla en los comentarios.

Ir al siguiente capítulo: Avanzando con la base de datos

Aprender con Mejorando.la y Adrián Catalán

Te invitamos a ver el curso gratuito de Android y Phonegap que dio Adrián Catalán en un programa de Mejorando.la.