Está en la página 1de 6

Explicaciones

A continuación, se realizará un recorrido por todos los archivos del proyecto para explicar su contenido.

1. Android Manifest
Para comenzar, abra el archivo Android Manifest (véase el capítulo Principios de programación -
Manifiesto). Este archivo es bastante básico en este caso.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.eni.android.helloandroid"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />

<application
android:allowBackup=”true”
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.eni.android.helloandroid.HelloAndroidActivity"
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>

En este archivo:

El package (identificador) de su aplicación (en este caso com.eni.android. helloandroid) se


define en el atributo package de la etiqueta manifiesto.

La versión de la aplicación se detalla con los atributos versionCode (número de versión)


yversionName (nombre de versión: visible en el Market) de la etiqueta manifiesto.

La versión mínima del SDK para poder utilizar la aplicación se informa en el


atributominSdkVersion de la etiqueta uses-sdk, así como la versión del SDK utilizada para
desarrollar la aplicación (atributo targetSDKVersion).

El icono y el nombre de su aplicación se introducen con los atributos icon y label de la


etiqueta application así, como el tema utilizado por la aplicación (véase el capítulo
Personalización y gestión de eventos - Personalización).

La descripción de la actividad principal (etiqueta activity) incluye:


El nombre de la clase que implementa Activity.

El título de la actividad.

Los filtros de la actividad:


MAIN: indica que se trata de la actividad principal de la aplicación.

LAUNCHER: indica que esta actividad está presente en el arranque de la


aplicación.
2. Resources (recursos)

Drawable

La carpeta drawable contiene el icono de la aplicación en cuatro resoluciones (ldpi = baja resolución,
mdpi = resolución media, hdpi = alta resolución, xhdpi = resolución muy alta).

Layout

La aplicación sólo contiene un valor, que sirve para mostrar la etiqueta "HelloAndroid".

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".HelloAndroidActivity" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />

</RelativeLayout>

Esta vista sólo contiene un RelativeLayout, que sirve de contenedor para el campo de texto (véase el
capítulo Creación de interfaces sencillas - Layouts) cuyo contenido se declara en el archivo strings.xml
(véase el capítulo Creación de interfaces sencillas - Recursos). El RelativeLayout tiene los atributos
siguientes:

Un margen interno (padding) para el texto.


Este campo de texto también tiene los atributos siguientes:

La anchura y la altura del elemento (véase el capítulo Creación de interfaces sencillas -


Principios).

Values

Puede observar las cinco carpetas values:

values: carpeta utilizada para almacenar diferentes valores útiles en una aplicación (utilizada
en la mayoría de los casos).

values-sw600dp: todos los archivos contenidos en esta carpeta reemplazan los archivos
values por defecto cuando el dispositivo tiene una pantalla grande (tablet de 7 pulgadas, por
ejemplo).

values-sw720dp-land: todos los archivos contenidos en esta carpeta reemplazan los


archivos values por defecto cuando el dispositivo tiene una pantalla muy grande (tablet de 10
pulgadas en horizontal, por ejemplo).

values-v11: todos los archivos contenidos en esta carpeta reemplazan los archivos values
por defecto cuando el dispositivo tiene la versión 3.x de Android (Honeycomb).

values-v14: todos los archivos contenidos en esta carpeta reemplazan los archivos values
por defecto cuando el dispositivo tiene una versión 4.x de Android (Ice Cream Sandwich o
JellyBean).

La carpeta values contiene los archivos siguientes (véase el capítulo Creación de interfaces sencillas -
Recursos):
strings.xml

<?xml version="1.0" encoding="utf-8"?>


<resources>

<string name="app_name">HelloAndroid</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>

</resources>

Este archivo contiene cuatro cadenas de caracteres:

El nombre de la aplicación.

El mensaje "Hello world!", que se mostrará.

La cadena de caracteres utilizada en la barra de acción/menú.

El título de la actividad principal.

dimens.xml

<resources>

<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>

</resources>

Contiene las distintas dimensiones utilizadas en la aplicación (los distintos márgenes internos
utilizados).
Se sobrescriben con el archivo dimens.xml que está ubicado en las carpetas values-
sw600dp y values-sw720dp-land para especificar nuevas dimensiones para pantallas más
grandes.
Contenido del archivo dimens.xml presente en la carpeta values-sw600dp:

<resources>

<!--
Customize dimensions originally defined in res/values/
dimens.xml (such as
screen margins) for sw600dp devices (e.g. 7" tablets) here.
-->

</resources>

Contenido del archivo dimens.xml presente en la carpeta values-sw720dp-land:

<resources>

<!--
Customize dimensions originally defined in res/values/
dimens.xml (such as
screen margins) for sw720dp devices (e.g. 10" tablets)
in landscape here.
-->
<dimen name="activity_horizontal_margin">128dp</dimen>

</resources>

styles.xml

<resources>

<!--
Base application theme, dependent on API level. This theme is
replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>

<!-- Application theme. -->


<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular
API-level can go here. -->
</style>

</resources>

Contiene el tema utilizado por la aplicación (véase el capítulo Personalización y gestión de


eventos - Personalización).
Este tema será distinto en aquellos dispositivos que dispongan de las API 11 (Honeycomb) y
14 (Ice Cream Sandwich o posterior). Todo ello para utilizar el tema Holo de Android,
disponible solamente para las versiones 3.x y 4.x.
Contenido del archivo styles.xml presente en la carpeta values-v11:

<resources>

<!--
Base application theme for API 11+. This theme completely replaces
AppBaseTheme from res/values/styles.xml on API 11+ devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
<!-- API 11 theme customizations can go here. -->
</style>

</resources>

Contenido del archivo styles.xml presente en la carpeta values-v14:

<resources>

<!--
Base application theme for API 14+. This theme completely replaces
AppBaseTheme from BOTH res/values/styles.xml and
res/values-v11/styles.xml on API 14+ devices.
-->
<style name="AppBaseTheme"
parent="android:Theme.Holo.Light.DarkActionBar">
<!-- API 14 theme customizations can go here. -->
</style>

</resources>

3. Archivo generado
Esta carpeta contiene el archivo R.java. Se genera automáticamente con la precompilación de los
archivos ubicados en la carpeta de recursos.

/* AUTO-GENERATED FILE. DO NOT MODIFY.


*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/

package com.eni.android.helloandroid;

public final class R {


public static final class attr {
}
public static final class dimen {
/** Default screen margins, per the Android Design guidelines.

Customize dimensions originally defined in res/values/dimens.xml (such as


screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.

*/
public static final int activity_horizontal_margin=0x7f040000;
public static final int activity_vertical_margin=0x7f040001;
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int action_settings=0x7f080000;
}
public static final class layout {
public static final int activity_hello_android=0x7f030000;
public static final int activity_main=0x7f030001;
}
public static final class menu {
public static final int hello_android=0x7f070000;
public static final int main=0x7f070001;
}
public static final class string {
public static final int action_settings=0x7f050001;
public static final int app_name=0x7f050000;
public static final int hello_world=0x7f050002;
}
public static final class style {
/**
Base application theme, dependent on API level. This theme is
replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.

Theme customizations available in newer API levels can go in


res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.

Base application theme for API 11+. This theme completely replaces
AppBaseTheme from res/values/styles.xml on API 11+ devices.

API 11 theme customizations can go here.

Base application theme for API 14+. This theme completely replaces
AppBaseTheme from BOTH res/values/styles.xml and
res/values-v11/styles.xml on API 14+ devices.

API 14 theme customizations can go here.


*/
public static final int AppBaseTheme=0x7f060000;
/** Application theme.
All customizations that are NOT specific to a particular API-level can go
here.
*/
public static final int AppTheme=0x7f060001;
}
}

No modifique este archivo ya que sus modificaciones se perderán en la próxima compilación.

Puede observar que el archivo contiene referencias a todos los elementos presentes en la
carpetares (drawable, layout y strings).

Desde la nueva versión de ADT, la carpeta gen también contiene el archivo BuildConfig.java.

/** Automatically generated file. DO NOT MODIFY */ package com.eni.android.helloandroid;


public final class BuildConfig {
public final static boolean DEBUG = true;
}

Este archivo le permite gestionar si se encuentra en modo desarrollo o producción en su aplicación


mediante la variable DEBUG.

El estado de esta variable se modifica automáticamente cuando genera su apk para que los logs no
se muestren durante la ejecución de la aplicación en el dispositivo (véase el capítulo Depuración y
gestión de errores - Logs).

4. Archivo fuente
Disponemos de un archivo "HelloAndroidActivity" que contiene la implementación de nuestra vista
(véase el capítulo Creación de interfaces sencillas - Principios).

package com.eni.android.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
public class HelloAndroidActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hello_android);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.hello_android, menu);
return true;
}

Nuestra clase debe heredar de Activity y sobrecargar el método onCreate en el que se define el
contenido de la vista gracias al método setContentView. La vista se obtiene gracias a la clase R.java,
ya que se declara estáticamente en esta clase.

También contiene la creación de un menú utilizado en la aplicación (véase el capítulo Creación de


interfaces sencillas - Menús).

También podría gustarte