martes, 19 de julio de 2011

Estructura de un proyecto Android – Android project structure

Si desplegamos nuestro primer proyecto Android veremos que está compuesto de una serie de carpetas, la mayoria de ellas con ficheros XML.

Las más significativas son :
  • src : Carpeta que contiene el paquete java con los fuentes de nuestro programa. El nombre del paquete lo definimos al crear nuestro proyecto al igual que el nombre de nuestra clase principal. Si pulsamos dos veces sobre el programa veremos su contenido en el panel derecho del IDE Eclipse.
  • gen : Carpeta que contiene clases java generadas automaticamente por Eclipse y que no debemos modificar.
  • assets : Carpeta que contiene ficheros que nos serán utiles en nuestra aplicación. En general serán ficheros auxiliares de los que veremos un ejemplo en una entrada próxima.
  • res :  Carpeta que contiene los recursos (resources) que utilizaremos en nuestro proyecto. Está compuesta de una serie de subcarpetas entre las que destacan:
    • drawable-hdpi : Contiene las imágenes e iconos que utilizaremos en la aplicación en alta resolución. Por defecto viene con un icono de un androide.
    • drawable-ldpi : Contiene las mismas imágenes e iconos pero a una resolución baja.
    • drawable-mdpi : Contiene las mismas imágenes e iconos pero a una resolución media.
    • layot :  Contiene un fichero XML por cada pantalla distinta que vayamos a utilizar en nuestro proyecto. Inicialmente sólo contiene una llamada main.xml 
    • values : Contiene un fichero XML con los textos que vamos a utilizar en nuestro proyecto. En vez de escribir directamente los textos en nuestro programa, Android nos facilita esta utilidad para facilitarnos su  traducción y convertir nuetro programa en multi-idioma como veremos más adelante.
    • AndroidManifest.xml : Este fichero contiene la definición propia del proyecto, con los nombres de las actividades que se van a ejecutar, los permisos que vamos a necesitar para ejecutarla y la versión mínima de Android que necesitamos.

COMPRENDIENDO EL FUNCIONAMIENTO DE ANDROID


Si abrimos nuestro programa creado dentro de la carpeta src, vemos que es muy sencillo:

package com.pruebas.hola;
import android.app.Activity;
import android.os.Bundle;

public class AndroideNovatoActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}
Vemos que basicamente reescribe el método ‘onCreate’ que es el que se ejecuta en el momento de lanzar la aplicación y carga el contenido a visualizar basandose en el fichero xml main de la carpeta layout.

Si abrimos el fichero layout\main.xml se nos muestra una previsualización y una serie de controles que podemos arrastrar al simulador para modificar el contenido de la vista.
 
 
De momento nos interesa ver el contenido del fuente XML, así que pulsamos sobre la pestaña main.xml y vemos su estructura:

<?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>


LinearLayout es el contenedor principal de la vista y en su interior define un TextView que es un texto a mostrar. El contenido del texto no se escribe directamente sino que hace referencia a "@string/hello” es decir, a la entrada llamada ‘hello’ del fichero strings.xml de la carpeta src\values
Si vemos el contenido de este fichero : 

Se aprecia que hay dos entradas definidas:

  • hello (String) , cuyo contenido es ‘Hello World, AndroideNovatoActivity!
  • app_name (String), es el nombre de la aplicación tal como lo definimos en el momento de su creación.


Es muy recomendable definir en este fichero cualquier texto que queramos mostrar en la aplicación ya que su mantenimiento y localización es mucho mas sencillo que buscarlos por en medio de todos los programas que podamos hacer.



Por último vamos a ver algunas características del fichero AndroidManifest :


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.pruebas.hola"
      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=".AndroideNovatoActivity"
                  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>



Primero declara el nombre del paquete y su versión, asi como la mínima versión del Sdk para que pueda ejecutarse.

Despues define la aplicación indicando que el icono que se mostrará en el dispositivo lo carga de res\drawable\icon.png. Dependiendo de la resolución del dispositivo se cargará de una carpeta u otra automáticamente.

El nombre de la aplicación lo carga de la entrada ‘app_name’ del fichero ‘res\values\strings.xml’ como ya vimos anteriormente.

Dentro de la aplicación se definen las activities o diferentes procesos que se lanzarán en nuestra aplicación. De momento solo tenemos una de nombre ‘.AndroideNovatoActivity’.

En la próxima entrada, ampliaremos un poco nuestra magnífica aplicación y le daremos alguna utilidad añadida.


No hay comentarios:

Publicar un comentario