Ads 468x60px

Perfil

miƩrcoles, 3 de julio de 2013

ProgramaciĆ³n Android: Hola Mundo


Antes de empezar, quiero comunicar que todas las entradas relacionadas con los tutoriales de Android los colocarĆ© en la pĆ”gina Android.
En esta entrada vamos a empezar directamente con el tĆ­pico Hola Mundo (Hello World):

CREANDO EL PROYECTO

Arrancamos eclipse con todo configurado correctamente y vamos a Archivo->nuevo->Proyecto Android:
crear Proyecto Android
Despues de esto se nos mostrarĆ” un dialogo para configurar el proyecto, debemos introducir:
  • El nombre del proyecto. en este caso Hola Mundo
  • Donde queremos crear el proyecto (normalmente dentro del workspace).
  • VersiĆ³n Android a la que irĆ” destinada la aplicaciĆ³n, en este caso Android 2.2
  • Nombre de la aplicaciĆ³n (El que se mostrarĆ” al usuario una vez instalada, Hola Mundo).
  • El Nombre del paquete que se usa como espacio de nombres y estructura de organizaciĆ³n del cĆ³digo, “app.tutorial.holaMundo”
  • Marcamos la opciĆ³n Crear Actividad para que eclipse cree la clase que se lanzarĆ” al ejecutar la aplicaciĆ³n. Normalmente a esta clase se le llama MainActivity.
  • VersiĆ³n MĆ­nima del SDK es la versiĆ³n mĆ­nima necesaria del SDK para ejecutar la aplicaciĆ³n, a menor nĆŗmero, la aplicaciĆ³n correrĆ” en mĆ”s terminales, pero no podremos usar las Ćŗltimas caracteristicas de Android.
  • Una vez rellenado todo, le damos a finalizar.
configuracion proyecto Android
Ya hemos creado nuestro primer proyecto Android, ahora vamos a ver de quƩ se compone:

COMPONENTES DEL PROYECTO

Los proyectos de Android siguen una estructura fija de carpetas que debemos respetar. Podemos ver esta estructura con la vista Package Explorer que proporciona eclipse:
Estructura proyectos Android

Carpeta src (de fuentes)

Esta carpeta contiene el cĆ³digo fuente organizado en paquetes. AquĆ­ irĆ”n las clases java de nuestra aplicaciĆ³n.

Carpeta gen (archivos generados)

AquĆ­ van los archivos que genera el compilador en sus pasadas, como el archivo de recursos R, esta carpeta normalmente no se debe tocar.

Carpeta assets (De recursos varios)

Almacena recursos que pueda necesitar nuestra aplicaciĆ³n, como ficheros de mĆŗsica etc.
Podremos acceder a ellos fĆ”cilmente con la clase del sistema AssetManager

Clase de recursos (res)

Esta carpeta es una de la que mĆ”s vamos a usar junto con src, contiene todos los recursos necesarios para la aplicaciĆ³n. Todos los archivos de esta carpeta son indexados por el compilador y se genera el fichero de recursosR, que nos permite acceder a ellos de una forma rĆ”pida.
EstĆ” dividida en subcarpetas:
  • anim: Ficheros XML para la definiciĆ³n de Animaciones.
  • color: Ficheros XML de definiciĆ³n de colores.
  • drawable: Ficheros bitmap(.png, .9.png, .jpg, .gif) o XML con contenidos que se dibujarĆ”n (fondos, botones etc).
  • layout: Ficheros XML que definen la capa de interfaz de usuario.
  • menu: Ficheros XML con la definiciĆ³n de los menĆŗs de la aplicaciĆ³n.
  • raw: Binarios que no se pueden colocar en las otras carpetas.
  • values: Ficheros XML para la definiciĆ³n de estilos, cadenas de texto para localizaciĆ³n etc.
  • xml: Ficheros XML que pueden ser accedidos en tiempo de ejecuciĆ³n.
Algunas carpetas pueden tener varias versiones para adaptarse a diferentes tamaƱos de pantallas, idiomas etc.

El archivo Manifest (AndroidManifest.xml)

Todos los proyectos tienen un archivo como este, en Ć©l se detallan las caracterĆ­sticas principales (mĆ³dulos, permisos, nombre, icono…).
Ahora que hemos explicado la estructura de un proyecto Android, veamos el ejemplo Hola Mundo al detalle

Profundizando en el “Hola Mundo”

package app.tutorial.holaMundo;
 
import android.app.Activity;
import android.os.Bundle;
 
public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
Al crear el proyecto dimos nombre a una Actividad (MainActivity), estas clases son las encargadas de mostrar las interfaz grĆ”fica al usuario, deben extender de la clase Activity.
Al crear una activity Android llama a su mĆ©todo onCreate() que hace lo necesario para mostrar la pantalla al usuario. Tal y como estĆ” la actividad al crear el proyecto. Hace una llamada a setContentView(), que tiene como parĆ”metro el identificador de una vista ya creada.
Por lo tanto, R.layout.main referencia a un archivo xml situado en la carpeta ./res/layout (ficheros de definiciĆ³n de pantalla).

Archivo ./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>
En este archivo se define una pantalla en la que los elementos se agruparĆ”n de forma lineal (LinearLayout) y con un componente de texto (TextView). Al componente de texto le fijamos el texto a mostrar con la referencia@string/hello (valor del item en ./res/values/strings.xml)

Archivo ./res/values/strings.xml

< ?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, MainActivity!</string>
    <string name="app_name">Hola Mundo</string>
</resources>
Para que la aplicaciĆ³n funcione es necesario crear el AndroidManifest:
< ?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="app.tutorial.holaMundo"
      android:versionCode="1"
      android:versionName="1.0">
    <uses -sdk android:minSdkVersion="8" />
 
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MainActivity"
                  android:label="@string/app_name">
            <intent -filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent>
        </activity>
 
    </application>
</manifest>
En este archivo se definen el paquete por defecto, datos de versiĆ³n, icono (mediante una referencia). El nombre de la aplicaciĆ³n (otra referencia al fichero strings.xml). Despues se define el comportamiento de la aplicaciĆ³n. Se aƱaden dos filtros para que la actividad que definimos anteriormente sea usada como principal (android.intent.action.MAIN) y para que sea incluida en el menĆŗ de aplicaciones (android.intent.category.LAUNCHER)