Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tierr 3
Tierr 3
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 título de la actividad.
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:
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-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
<string name="app_name">HelloAndroid</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
</resources>
El nombre de la aplicación.
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>
<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>
</resources>
<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>
<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.
package com.eni.android.helloandroid;
*/
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.
Base application theme for API 11+. This theme completely replaces
AppBaseTheme from res/values/styles.xml on API 11+ devices.
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.
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.
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.