Visitas: 117  
Tiempo total: 1 días con 22:38:47 hrs  

A continuación las instrucciones necesarias para entender cómo es que funciona Android en Eclipse, todo lo necesario para empezar a manipular las clases Java, modificar el diseño de los XML (que son las interfaces), agregar nuevas imágenes y entender la estructura básica de una aplicación Android.

Requisitos

Se asume que el lector tiene instalada una versión de Eclipse con Android SDK. En el siguiente enlace se presenta la publicación que realice hace algunos días atrás sobre la instalación de este entorno en Linux:

http://www.elconspirador.com/2014/09/20/instalacion-de-eclipse-luna-y-android-sdk-en-gnulinux/

Crear el proyecto

En Eclipse, nos dirigimos al menú File > New > Other. Nos aparece una ventana, aquí seleccionamos la carpeta Android > Android Application Project.

Proyecto nuevo

Ahora establecemos la configuración del nuevo proyecto. En este paso es necesario establecer la versión SDK mínima, lo que esto permite es establecer en que celulares podrá funcionar nuestra aplicación, entre más antigua es, significa que más personas la podrán instalar en sus dispositivos móviles pero con la desventaja de no utilizar las funcionalidades de las últimas versiones de la SDK de Android.

Configuracion

La siguiente ventana nos preguntara sobre el área de trabajo, es totalmente aconsejable crear el workspace en la misma carpeta de instalación de Eclipse. A continuación se solicita el icono de la aplicación, el único inconveniente es que Eclipse baja la calidad de la fotografía seleccionada, esto se puede cambiar más adelante, estableciendo la imagen con su máxima resolución de acuerdo al tipo de dispositivo que solicita el icono.

Crear Activity

Para aprender a utilizar Android, se selecciona una interfaz en blanco (Blank activity), ahora finalmente la ultima ventana nos preguntara sobre el nombre de la ventana principal, en mi caso siempre dejo MainActivity por defecto.

Problema numero 1

Eclipse no nos permite seleccionar “Blank Activity” si utilizamos un SDK mayor a la versión 14 <<Entonces seleccionamos la versión 22>> pero cuando se crea el proyecto nos muestra el siguiente error:

Error API 22

Texto del error:

Failed to find the style corresponding to the id 2130772027
Failed to find the style corresponding to the id 2130771996
java.lang.NullPointerException
Exception details are logged in Window > Show View > Error Log
The following classes could not be instantiated:
– android.support.v7.internal.app.WindowDecorActionBar (Open Class, Show Error Log)
See the Error Log (Window > Show View) for more details.

Para solucionar esto, simplemente cambiamos la API a una inferior (en mi ejemplo seleccione la versión 10).

Error API 10

Área de trabajo

Se compone de:

  1. Clases y código Java.
  2. Carpetas de imágenes.
  3. Activities XML.
  4. AndroidManifest.xml – Configuración general.
  5. Pestaña de edición grafica.
  6. Pestaña de edición de código.
  7. Vista previa.
  8. Paleta de elementos gráficos.

Area de trabajo

1 – Clases y código Java

Cada Activity tiene asignada una clase Java, esto nos permitirá, por ejemplo, asignar eventos a los botones que el usuario presiona, cargar información desde un servicio web o crear elementos dinámicos, entre otras cosas. La estructura básica del código Java es la siguiente:

Clases y codigo java

En la imagen, observamos el método onCreate, que es llamado cuando nuestro dispositivo móvil muestra el Activity; con la instrucción setContentView(R.layout.activity_main); se establece el Activity que representa la clase Java, es decir que nuestro código lo colocamos después de esta instrucción.

Si por ejemplo tenemos más Activities, uno llamado configuracion, entonces el autocompletado de setContentView utilizando R.layout. debería de ser:

R.layout.activity_main
R.layout.configuracion

Esto significa que R.layout hace referencia a los archivos XML que están en la carpeta layout.

Ok, hasta ahora todo bien. El siguiente método que observamos es onCreateOptionsMenu, este método establece el menú. Aquí observamos la instrucción getMenuInflater().inflate(R.menu.main, menu); que al igual que el método anterior, hace referencia a un archivo XML.

1 – Clases y código Java – Menu y Cadenas de texto

Siguiendo con el tema anterior, el archivo XML del menú está alojado en:

{proyecto}/res/menu/

Lo que busca Android es optimizar el uso de memoria, haciendo referencia al mismo objeto para evitar repetir información; así que por favor observa la siguiente imagen:

Menu y strings

(1) La estructura básica de un menú, es la siguiente:

menu

En la imagen observamos el elemento del menú con Id action_settings y con titulo @string/action_settings: esto tal vez suena complicado, pero el título hace referencia al id action_settings del XML de Strings ubicado en:

{proyecto}/res/values/strings.xml

(2) La estructura básica del archivo XML de cadenas de texto, es la siguiente:

XML strings

Pero utilizar este archivo XML es necesario? En realidad solo si estas desarrollando una aplicación industrial, en mi caso utilizo texto simple en cada asignación de títulos y nombres.

1 – Clases y código Java – Eventos del menu

Todo Ok hasta ahora: la siguiente instrucción que observamos en MainActivity.java es onOptionsItemSelected, este método es llamado cuando el usuario presiona el botón de menú en su dispositivo móvil, y selecciona el menú que nosotros hemos establecido, en este caso es “Settings”, así que establecemos nuestra implementación en la sentencia IF:

if (id == R.id.action_settings) {
//implementacion
}

Si nuestra aplicación no utiliza menú, entonces eliminamos el código de onOptionsItemSelected y la instrucción getMenuInflater().inflate(R.menu.main, menu); en el método onCreateOptionsMenu.

2 – Carpeta de imágenes

Android trabaja de acuerdo a la resolución del dispositivo móvil, entonces para darle una mejor resolución a nuestro icono principal, únicamente reemplazamos la imagen del icono que seleccionamos, esta imagen tendrá el nombre que nosotros le asignamos. El reemplazo de la imagen, lo hacemos en las carpetas:

{proyecto}/res/drawable-hdpi
{proyecto}/res/drawable-ldpi
{proyecto}/res/drawable-mdpi
{proyecto}/res/drawable-xhdpi
{proyecto}/res/drawable-xxhdpi

También existe:
{proyecto}/res/drawable-xxxhdpi

Pero nuestro ejemplo no muestra dicha carpeta. A continuación, creamos resoluciones diferentes para cada carpeta:

ldpi (low) ~120dpi
mdpi (medium) ~160dpi
hdpi (high) ~240dpi
xhdpi (extra-high) ~320dpi
xxhdpi (extra-extra-high) ~480dpi
xxxhdpi (extra-extra-extra-high) ~640dpi

Para hacer referencia a esta imagen en nuestro código XML, se utiliza @drawable/ic_launcher donde ic_launcher es el identificador que le asignamos en el momento en que creamos el proyecto.

Nota: Ok, me has dicho la resolución que necesita cada carpeta, pero como la reemplazo? Respuesta: necesitas ir a la carpeta en el sistema operativo C:\eclipse\workspace\Prueba\res (en mi caso), la edición de la imagen se hace desde un editor de imágenes, como Photoshop.

3 – Activity.

Esta publicación finaliza aquí, pero continuara, por favor espera mientras escribo las notas que tengo sobre los activities, su código XML y algunas modificaciones que se pueden realizar desde su clase Java y sobre las demás áreas de trabajo de Eclipse con Android.

Referencias

[http://stackoverflow.com/questions/26435231/getactionbar-returns-null-appcompat-v7-21]
[http://developer.android.com/guide/practices/screens_support.html]