martes, 3 de enero de 2012

5.1.- Programación en Android: Que ha pasado

- no title specified
5.1.- Programación en Android:  ¿Que ha pasado?

Ahora que hemos configurado nuestro AVD, y hemos ejecutado nuestra aplicación, vemos en el emulador la siguiente pantalla:

Pero ¿qué es lo que ha pasado?  Nosotros no habíamos escrito ningún texto, ni siquiera hemos escrito una línea de código, y ya tenemos nuestra aplicación de "Hola mundo android" creada.  Pues sí y no, la aplicación está creada porque el asistente crea una activity que muestra una cadena de texto o más bien, el layout que utiliza esta activity contiene una cadena de texto.
Vamos ahora a hacer algo nosotros, vamos a cambiar el texto mostrado, así como alguna que otra cosilla para comenzar a familiarizarnos un poco con el entorno.


Volvamos a recordar el escritorio de Eclipse:
En la imagen se puede apreciar, el explorador de paquetes con las ramas más relevantes abiertas.  Observamos nuestro proyecto (1), y se puede ver la carpeta que contiene el código (2), nuestro paquete (3) y el fichero con el código fuente de nuestra aplicación (4), ahora sólo uno, pero con otras aplicaciones tendremos más ficheros con el código, así como incluso más paquetes.

La carpeta gen (5), contiene ficheros autogenerados por el entorno o por el plug-in de ADT.  Están clasificados por el paquete al que pertenecen.  Lo que contienen estos recursos (6), son enteros (int) con el identificador ID de cada recurso, para poder acceder a ellos a través del programa.  Por ejemplo, para acceder al recurso que contiene el nombre de la aplicación, podríamos hacerlo mediante el siguiente código:

String nombre_aplicacion=getResources().getString(R.string.app_name); 


También podemos acceder a recursos que contiene el sistema operativo android, como pueden ser iconos, cadenas de texto, etc, lo cuál haríamos con un código como el siguiente:

String confirmar=Resources.getSystem().getString(android.R.string.ok);


En la carpeta bin (7) hay diversos ficheros binarios, como por ejemplo nuestra propia aplicación (apk).

En res (8) tenemos los recursos de nuestra aplicación.  Vemos que tenemos varias carpetas drawable (9), y que éstas contienen el mismo fichero: ic_launcher.png.  En realidad, no es el mismo, sólo tiene el mismo nombre.  Estas carpetas, contienen los recursos para diferentes tamaños de pantalla, así nuestra aplicación cogerá automáticamente, de forma transparente a nosotros, los recursos que mejor se adapten al formato de pantalla dónde se está ejecutando la aplicación.  No son necesarias todas las carpetas, ya que si sólo hay una, los recursos los escalará el sistema, pero pueden no quedar tan bien como con los recursos dedicados a cada formato de pantalla.

En la carpeta layout (10), están las distintas disposiciones de pantallas, o de elementos que utilizará nuestra aplicación y sus activitys.

Ahora vamos a detenernos en la carpeta values (11).  Esta carpeta contiene diversos recursos, como pueden ser cadenas de texto (string), colores (color), dimensiones (dimen), etc.  Y aunque las cadenas de texto y otros valores, los podamos poner en el código, es muy recomendable tenerlos en estos recursos de valores, por una razón muy sencilla, entre otras, la localización.
Por localización, se entiende a la forma en que nuestro programa se muestra en distintos lenguajes.  Aquí tenemos la carpeta por defecto "values", pero también podemos tener a mayores otra carpeta con el nombre "values-es", que contendría las cadenas y/o valores para el lenguaje español.  Así cuando nuestra aplicación se ejecutase en un dispositivo, cuyo lenguaje sea distinto del español, cogería los recursos de la carpeta "values" (o de la carpeta correspondiente a ese lenguaje, si la hemos creado), y si el dispositivo está con el lenguaje español, mostraría las cadenas de la carpeta "values-es".
Hay que aclarar, que la única carpeta que tiene que tener todos los recursos completos, es la carpeta por defecto "values".  Si la aplicación se ejecuta en un dispositivo con el idioma español, busca una cadena en la carpeta "values-es", pero si no la encuentra aquí, accede a la carpeta por defecto "values", y toma el valor de ésta.
Lo veremos enseguida con un ejemplo, pero antes terminemos de describir la vista que tenemos del entorno.
En el punto (12), tenemos abierta una ventana del editor de recursos, ahora mismo vemos que tenemos dos cadenas de texto (String).  Si cambiamos para la pestaña (14), editaríamos este mismo fichero, pero con la vista en edición de XML.
En el punto (15) tenemos varios iconos, con el actual seleccionando Java, aunque tambien podemos ponerlo en la vista de Depurar y DDMS, u otras.  Cuando procedamos a depurar nuestra aplicación las veremos con más detalle.
Y por último, en el punto (16) tenemos varias pestañas en las que podemos observar los errores del programa, la documentación (javadoc), y la salida por consola, entre otras, como pueden ser las propiedades de los objetos cuando estemos en el editor de layouts etc., aunque la disposición de las ventanas puede ser cambiada y puesta a nuestro gusto.

Cambiando el mensaje de nuestra aplicación

Bien, volvamos ahora a nuestra aplicación.  En otros capítulos, habíamos quedado en que nos mostraría el famoso mensajillo de "Hola Mundo Android", o algo parecido, así que vamos a proceder a cambiar un recurso de nuestro programa, para que ponga lo que deseamos.
Abrimos la carpeta "values", y hacemos doble-clic en el recurso "strings.xml", se nos despliega una pantalla como la que vimos anteriormente.
Una vez en esta pantalla, seleccionamos la pestaña "resources" (13), si es que no lo ésta ya, y entonces seleccionamos el recurso "hello (String)", y nos aparecerá una ventana similar a la siguiente:




En esta pantalla, dónde pone "Name*: hello", este es el nombre del recurso.  Y dónde pone Value*, el valor.  Bien, pues procedamos a cambiarlo.  Vamos a poner el valor con el siguiente texto:  "Hello Android World".  Y direis:  ¿Y por que en inglés?, pues porque así vemos un ejemplo de localización y matamos dos pájaros de un tiro.  Al terminar de editar el texto, le damos a guardar o pulsamos control+shift+s.
Ahora seleccionamos la carpeta "values", y le damos a copiar.  Y la pegamos (seleccionamos la carpeta res), con el nombre "values-es".
Abrimos el archivo strings.xml que hay en la carpeta "values-es", y borramos el recurso app_name (String).  Y con el que queda, hello (String), le cambiamos el valor a "Hola Mundo Android de España".  Y guardamos los cambios.  Hemos borrado la otra cadena, para que se observe, que si no está definida en esta localización, entonces lo coge de la localización por defecto, que es "values".

Ejecutamos el emulador, y veremos nuestra aplicación.  Ahora si en el emulador android pulsamos el icono de la aplicación "custom locale" podremos cambiar el lenguaje de nuestro dispositivo, y con él nos cambiará la cadena de texto y nos pondrá una u otra.









Ver. 1.0 – Revisión 3.1.2012

No hay comentarios:

Publicar un comentario