menu: ficheros XML con los menús de cada actividad.
values: también utilizaremos ficheros XML para indicar valores del tipo string, color, estilo o dimensión. De esta manera podremos cambiar los valores usados en un programa sin necesidad de ir al código fuente. Por ejemplo, nos permitiría traducir una aplicación a otro idioma.
anim: contiene ficheros XML con animaciones de vistas (Tween). Las animaciones se describen al final del capítulo 4.
animator: contiene ficheros XML con animaciones de propiedades.
xml: otros ficheros XML requeridos por la aplicación.
raw: ficheros adicionales que no se encuentran en formato XML.
AndroidManifest.xml: este fichero describe la aplicación Android. En él se indican las actividades, las intenciones, los servicios y los proveedores de contenido de la aplicación. También se declaran los permisos que requerirá la aplicación. Se indica la versión mínima de Android para poder ejecutarla, el paquete Java, la versión de la aplicación, etc.
ic_launcher-web.png: icono de la aplicación de gran tamaño para ser usado en páginas web. El nombre puede variar si se indicó uno diferente en el proceso de creación del proyecto. Ha de tener una resolución de 512 × 512 (con alfa).
proguard-project.txt: fichero de configuración de la herramienta ProGuard, que te permite optimizar y ofuscar el código generado. Es decir, se obtiene un .apk más pequeño y donde resulta más difícil hacer ingeniería inversa.
project.properties: fichero generado automáticamente por el SDK. Nunca hay que modificarlo. Se utiliza para comprobar la versión de la API y otras características cuando se instala la aplicación en el terminal.
 |
Vídeo[tutorial]: Elementos de un proyecto Android |
 |
Preguntas de repaso: Elementos de un proyecto |
NOTA: como se acaba de ver, el formato XML es ampliamente utilizado en las aplicaciones Android. También es conocido el excesivo uso de espacio que supone utilizar este formato para almacenar información. Esto parece contradecir la filosofía de Android, que intenta optimizar al máximo los recursos. Para solucionar el problema, los ficheros XML son compilados a un formato más eficiente antes de ser transferidos al terminal móvil.
1.10. Componentes de una aplicación
Existe una serie de elementos clave que resultan imprescindibles para desarrollar aplicaciones en Android. En este apartado vamos a realizar una descripción inicial de algunos de los más importantes. A lo largo del libro se describirán con más detalle las clases Java que implementan cada uno de estos componentes.
Las vistas son los elementos que componen la interfaz de usuario de una aplicación: por ejemplo, un botón o una entrada de texto. Todas las vistas van a ser objetos descendientes de la clase View, y por tanto, pueden ser definidas utilizando código Java. Sin embargo, lo habitual será definir las vistas utilizando un fichero XML y dejar que el sistema cree los objetos por nosotros a partir de este fichero. Esta forma de trabajar es muy similar a la definición de una página web utilizando código HTML.
Un layout es un conjunto de vistas agrupadas de una determinada forma. Vamos a disponer de diferentes tipos de layouts para organizar las vistas de forma lineal, en cuadrícula o indicando la posición absoluta de cada vista. Los layouts también son objetos descendientes de la clase View. Igual que las vistas, los layouts pueden ser definidos en código, aunque la forma habitual de definirlos es utilizando código XML.
1.10.3. Actividad (Activity)
Una aplicación en Android va a estar formada por un conjunto de elementos básicos de visualización, coloquialmente conocidos como pantallas de la aplicación. En Android cada uno de estos elementos, o pantallas, se conoce como actividad. Su función principal es la creación de la interfaz de usuario. Una aplicación suele necesitar varias actividades para crear la interfaz de usuario. Las diferentes actividades creadas serán independientes entre sí, aunque todas trabajarán para un objetivo común. Toda actividad ha de pertenecer a una clase descendiente de Activity.
1.10.4. Servicio (Service)
Un servicio es un proceso que se ejecuta “detrás”, sin la necesidad de una interacción con el usuario. Es algo parecido a un demonio en Unix o a un servicio en Windows. En Android disponemos de dos tipos de servicios: servicios locales, que son ejecutados en el mismo proceso, y servicios remotos, que son ejecutados en procesos separados. Los servicios se estudian en el capítulo 8.
1.10.5. Intención (Intent)
Una intención representa la voluntad de realizar alguna acción, como realizar una llamada de teléfono o visualizar una página web. Se utiliza cada vez que queramos:
Lanzar una actividad,
Lanzar un servicio.
Enviar un anuncio broadcast.
Comunicarnos con un servicio.
Los componentes lanzados pueden ser internos o externos a nuestra aplicación. También utilizaremos las intenciones para el intercambio de información entre estos componentes.
La llegada de las tabletas trajo el problema de que las aplicaciones de Android ahora deben soportar pantallas más grandes. Si diseñamos una aplicación pensada para un dispositivo móvil y luego la ejecutamos en una tableta, el resultado no suele resultar satisfactorio.
Para ayudar al diseñador a resolver este problema, en la versión 3.0 de Android aparecen los fragments. Un fragment está formado por la unión de varias vistas para crear un bloque funcional de la interfaz de usuario. Una vez creados los fragments, podemos combinar uno o varios fragments dentro de una actividad, según el tamaño de pantalla disponible.
 |
Vídeo[tutorial]: Los fragments en Android |
El uso de fragments puede ser algo complejo, por lo que recomendamos dominar primero conceptos como actividad, vista y layout antes de abordar su aprendizaje. No obstante, es un concepto importante en Android y todo programador en esta plataforma ha de saber utilizarlos. Véase el anexo A para aprender más sobre fragments.
1.10.7. Receptor de anuncios (Broadcast Receiver)
Un receptor de anuncios recibe anuncios broadcast y reacciona ante ellos. Los anuncios broadcast pueden ser originados por el sistema (por ejemplo: Batería baja, Llamada entrante) o por las aplicaciones. Las aplicaciones también pueden crear y lanzar nuevos tipos de anuncios broadcast. Los receptores de anuncios no disponen de interfaz de usuario, aunque pueden iniciar una actividad si lo estiman oportuno.
1.10.8. Proveedores de contenido (Content Provider)
Читать дальше