viernes, 31 de enero de 2014

Capítulo 3. Distribución de archivos de los proyectos Android (I)

Accesos rápidos:
 Comenzamos un nuevo tema en el que vamos a explicar la distribución de carpetas de los proyectos Android y los principales componentes que tenemos disponibles como botones, campos de texto, label, etc. Primero recordar que en esta entrada del blog (aquí) nos creamos nuestro primero proyecto en Android. Vimos entonces que en Eclipse teníamos una apariencia como esta:

Vemos que en la parte izquierda de la pantalla tenemos una serie de carpetas y archivos que componen nuestro proyecto y que no explicamos entonces. Vamos a entrar en profundidad a explicar todas y cada una de las carpetas así como la distribución de los archivos en las mismas con el fin de comprender un poco mejor como se programan las aplicaciones en Android. Además nos servirá para introducir el concepto de activity y como se le da la funcionalidad a las pantallas. Los archivos que podemos ver en el proyecto son:
  • AndroidManifest.xml: es uno de los ficheros más importantes de nuestro proyecto Android. Algunas de las cosas que indicamos en este archivo son los permisos de nuestra aplicación, versiones de Android que son compatibles con la aplicación, las activity de las que consta, etc.
  • .classpath, .project: ficheros que necesita Eclipse para gestionar el proyecto.
  • ic_launcher-web.png: icono de nuestra aplicación a alta resolución.
  • proguard-project.txt: nos da información sobre cómo usar el componente de Android ProGuard. Se trata de una herramienta que modifica nuestra aplicación con el fin de hacerla más difícil de descifrar ante ataques de ingeniería inversa.
  • project.properties: aquí se indica la versión del SDK que estamos empleando para generar nuestra aplicación. 
  • assest: aquí guardaremos los ficheros que no queremos sean compilados, por lo tanto serán introducidos en el archivo apk que generamos cuando compilamos nuestra aplicación tal y como se encuentran aquí. Es usado por ejemplo para guardar datos y texturas para juegos.
  • bin: aquí se almacena nuestro proyecto compilado, es decir, será el directorio de salida de la compilación de nuestro proyecto. Encontraremos entonces ficheros con terminación .class que corresponden a los ficheros .java compilados. 
    • bin/classes: contiene todas las clases compiladas
    • bin/res: contiene los archivos con imágenes que almacenábamos en res/drawable. 
  • libs: contiene otras librerías externas que añadamos a nuestro proyecto.
  • res: dentro de esta carpeta almacenaremos los ficheros de imágenes (png, jpg, etc) de nuestra aplicación, los archivos de especificación de las activity, los ficheros de especificación de los menús y, por último los ficheros que definirán las etiquetas de texto y los estilos que usaremos en la aplicación. Las subcarpetas que encontramos dentro de res son:
    • res/drawable: almacenamos en esta carpeta todos los recursos gráficos que emplearemos en nuestra aplicación. Es decir, en esta carpeta introduciremos los iconos y ficheros png, jpg, bmp, etc. Además podemos observar que hay varias carpetas drawable distintas, con una terminación hdpi, ldpi, mdpi y xhdpi cada una de ellas. Lo ideal es generar tantas versiones de cada archivo como carpetas encontramos, cada una con una resolución distinta. En tiempo de ejecución Android cargará el recurso con la resolución correspondiente al tamaño de pantalla donde se está ejecutando. Así evitamos emplear imágenes con mucha resolución y que, por lo tanto, ocupan mucho espacio en teléfonos que no soportan imágenes con tanta calidad. En el caso contrario, si la imagen tiene poca resolución y la mostramos en una pantalla de tamaño grande, la imagen se pixelará y no se mostrará como deseamos.
    • res/layout: en esta carpeta se almacenan los archivos que formarán las pantallas de nuestra aplicación. Cada una de estas pantallas se llama activity y se definen mediante archivos XML. Además podemos definir distinta distribución de la activity para distintos tamaños de pantalla. Además también podemos tener carpetas que tengan el sufijo -land, como por ejemplo layout-xlarge-land o layout-land. Añadiendo el sufijo -land indicamos que se tiene que emplear este diseño cuando el teléfono se ponga en posición horizontal. Vemos entonces que tenemos muchas consideraciones de diseño a la hora de implementar nuestra aplicación si queremos que se muestre correctamente en todo tipo de teléfonos.
  • menu: en esta carpeta se almacenarán los ficheros XML que definen las pantallas de menú. Estas pantallas se emplean generalmente para configurar y establecer las preferencias de nuestra aplicación.
  • values: en esta carpeta estarán los archivos que nos definan los elementos de texto, colores, estilos y temas de nuestra aplicación. Si vemos nuestra carpeta values, tenemos un fichero llamado string.xml en donde hemos almacenado las etiquetas de texto que tenemos en nuestra aplicación. Si queremos que nuestra aplicación sea multilenguaje y que se muestre en el idioma que tenga predefinido el terminal donde se está ejecutando tenemos que crearnos una carpeta del tipo values-xx.
  • src: en esta carpeta estarán situados los archivos Java de nuestra aplicación destinados a dotar de funcionalidad nuestro desarrollo. Podemos observar que dentro de esta carpeta hay una serie de subdirectorios formados con el nombre del package y del namespace que empleamos en la creación del proyecto. En este caso src/com/josealopezpastor/holamundo.
Una vez que ya tenemos clara la distribución de carpetas de nuestro proyecto vamos a ir explicando los principales componentes de Android y como podemos emplearlos en nuestro proyecto.

LIBRO RECOMENDADO PARA APRENDER ANDROID

Uno de los libros fundamientales y que recomiendo para aprender Android y llegar a hacer aplicaciones profesionales es: Android 2 Application Developement de Reto Meier




No hay comentarios :

Publicar un comentario