Programación Gráfica y Multimedia en Android



Documentos relacionados

Crear una Activity en Android. Paso por paso

Desarrollo de Aplicaciones Web Por César Bustamante Gutiérrez. Módulo I: Conceptos Básicos Tema 1: Concepto iniciales.

Mi Primer Proyecto en Android Studio

Tema 2: Introducción a Android

Desarrollo de apps para móviles Android. Entorno de desarrollo

Anexo IV Configuración del Entorno de Desarrollo. Guía de puntos de interés de la Ciudad de Madrid

Notas para la instalación de un lector de tarjetas inteligentes.

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

1.1. Instalación del entorno de desarrollo

Desarrollo de apps para móviles Android. Conceptos básicos de las aplicaciones Android

Accesibilidad web GUÍA FUNCIONAL

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

INSTALACIÓN DE MEDPRO

1 Itinerario. 2 Descripción y funcionalidades principales. Google Docs. 1.1 Qué vamos a hacer? 1.2 Qué pasos vamos a seguir?

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos:

WEB APP VS APP NATIVA

Entorno de desarrollo Instalación y configuración

U2. Introducción al desarrollo de aplicaciones móviles Smartphone y Android Desarrollo de Aplicaciones III TIC-UTSV Enero 2015 I.S.C.

Android Creación de una aplicación sencilla: Forwarding - Página 1 -

INTRODUCCIÓN.

Internet Information Server

Módulo 1 El lenguaje Java

Guía de uso del Cloud Datacenter de acens

WINDOWS : TERMINAL SERVER

COMO CREAR UNA PÁGINA WEB 2-INTRODUCCIÓN A DREAWEAVER

Introducción a Google Calendar Breve guía sobre algunas de sus funcionalidades destacables.

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa Configuración Internet Explorer para ActiveX...

UNIVERSIDAD DE MEDELLÍN NUEVO PORTAL WEB MANUAL DE USUARIO GESTOR DE CONTENIDOS

V Manual de Portafirmas V.2.3.1

Manual de NetBeans y XAMPP

Introducción al desarrollo para plataformas móviles con Phonegap

Figura 4.6: Prototipo de la pantalla de inicio.

Cómo acceder a Google Drive? Tiene más funcionalidades una cuenta de Google?

1. INTRODUCCIÓN Y OBJETIVOS

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

AGREGAR COMPONENTES ADICIONALES DE WINDOWS

Guía de inicio rápido a

ANDROID BÁSICO - E-LEARNING - EN LÍNEA

Introducción a la extensión de scripting en gvsig 2.0

Entorno de Desarrollo - 1 -

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Instalar y configurar W3 Total Cache

CRM para ipad Manual para Usuario

Configuración de PDAs en ITACTIL.

Tutorial 1. Instalación del entorno de desarrollo de Android. Curso de perfeccionamiento: Programación de Android TUTORIAL 1: INSTALACIÓN DEL SOFTWARE

ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

Presentación y objetivos

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE

Manual hosting acens

MANUAL BASICO DE WEBEX

Unidad II. Interfaz Grafica

CIF-KM. GUÍA DE LOS PRIMEROS PASOS

CAPÍTULO 3 VISUAL BASIC

Cómo descargar un video. 2. Dónde se guarda el video. 3. Cómo convertir el formato de un video (para celular) desde el RealPlayer.

FUNDAMENTOS DE PROGRAMACION CON C#

Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades:

Programación Android. Alejandro Alcalde. elbauldelprogramador.com

Manual de configuración de Thunderbird ÍNDICE

Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian

CATÁLOGO CATÁLOGO CATÁLOGO CATÁLOGO CATÁLOGO

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

Practica 1 Estructura De Un Proyecto En ANDROID

Configuracion Escritorio Remoto Windows 2003

Índice. Página 2 de 14

Manual del Alumno de la plataforma de e-learning.

Software Criptográfico FNMT-RCM

Manual para usuarios USO DE ONEDRIVE. Universidad Central del Este

UNIDAD DIDÁCTICA Nº 7 USO DE LOS RECURSOS EN MOODLE

Curso de HTML5 y CSS3

INSTALACIÓN A3ERP INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia

Tarea 1 Programación José Luis Comesaña

Índice Objetivo... 2 Definición y utilidad de Movie Maker... 3 Cómo iniciar Movie Maker?... 3 Elementos de la ventana de Movie Maker...

índice in the cloud BOX

Introducción a Moodle

1.- DESCRIPCIÓN Y UTILIDAD DEL SOFTWARE DAEMON TOOLS.

Manual de usuario Versión: 1.3 Edición: 05/02/2015 1

Creación de Alojamiento web y blogs.

Archivo de correo con Microsoft Outlook contra Exchange Server

Programación Android Completo

TPV Táctil. Configuración y Uso. Rev /01/09

CRM para ipad Manual para Usuario

Tutorial DC++ Usarlo es muy sencillo y configurarlo también, aunque tiene algunos trucos importentes.

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

Instalación De ANDROID STUDIO

TUTORIAL DE INSTALACIÓN PARA VIRTUALBOX

ELABORACIÓN DE TABLEROS DINÁMICOS DE COMUNICACIÓN CON EL PROGRAMA EDITOR TICO

Manual de configuración de Outlook 2010 ÍNDICE

Person IP CRM Manual MOBILE

Tutorial: Cómo realizar tu primer programa en C++ En el Sistema Operativo Windows

Escudo Movistar Guía Rápida de Instalación Para Windows

Oficina Online. Manual del administrador

Manual de uso básico de la aplicación

Aplicaciones Móviles. Sesión 12: Acceso a datos

Abril WebApp STR- a3erp. Aplicación de registro de pedidos, albaranes y facturas para a3erp. Compatible con las principales plataformas

Transcripción:

1

Programación Gráfica y Multimedia en Android 1. 2. 3. 4. 5. Introducción...4 Objetivos y límites de esta guía...4 Qué es Android?...5 Google cómo sistema móvil...5 Interfaz del sistema...5 Android Market...8 La Máquina Dalvik...9 Los SDKs de Android...10 Bibliografías recomendadas antes de comenzar...11 Alternativas al SDK y utilidades...12 Desarrollo visual con AppInventor...12 Desarrollo multiplataforma...13 DroidDraw...14 Primeros pasos e instalación del SDK...15 Java como el lenguaje de programación para Android...15 Instalación del SDK de Android...15 Qué IDE escoger?...17 Configurar Eclipse para la utilización del SDK...18 Familiarizarse con la interfaz de Eclipse...19 Perspectiva Java y DDMS...20 Conociendo Android...22 Estructura de un proyecto...22 Activity...24 View...24 Intent...25 Service...25 ContentProvider...26 BroadcastReceiver...26 Paquetes de Android...27 Añadir Ficheros a nuestra SD Virtual...28 Componentes Visuales...29 Layouts...29 Controles Básicos...31 Button...31 TextView...32 2

EditText...33 CheckBox...33 RadioButton...33 Ejercicio práctico. Conversor Grados Celsius a Farenheit...34 6. Intent y AndroidManifest.xml...37 AndroidManifest.xml...37 Permisos en Android...38 Navegar entre distintas Activity...38 Iniciar Servicios usando Intent...38 Definir un BroadcastReceiver...39 7. Gráficos 2D y Animaciones...40 Dibujar gráficos sencillos...40 Dibujar gráficos usando XML...42 Crear animaciones...44 8. Multimedia...47 Reproducir Audio...47 Reproducir Vídeo...49 Cargar Imágenes...51 3

4 Introducción En el mercado actual la demanda de dispositivos de telefonía móvil está en una curva ascendente la cual comenzó a crecer entre finales de los 90 y principios del 2000. Entre mediados de los 80 y principios de los 90 la cantidad de personas que podían tener acceso a un terminal móvil eran más bien pocas debido a su alto coste, aún así quienes disponían de estos terminales móviles tenían que cargar con aparatos que llegaban a pesar hasta el kilogramo, quién no recuerda aquellos teléfonos apodados ladrillo?. Con el paso del tiempo la tecnología nos ha permitido hacer estos dispositivos cada vez más pequeños, más elegantes y menos pesados. Debido a el avance de la tecnología y nuestra dependencia cada vez más creciente hacia estos dispositivos, el teléfono móvil ha sufrido gran variedad de transformaciones convirtiéndolo desde un aparato electrónico destinado a realizar llamadas de teléfono, a un dispositivo todo en uno que sustituye a una gran cantidad de herramientas. Hoy día los teléfonos móviles de gama media disponen de GPS el cual nos sustituye a la antigua brújula y mapa, cámara de fotos de gran resolución, sustituyendo a la antiguas cámaras de película o como alternativa a una cámara digital, grabadoras de voz, reproductores de música, etc. Todo esto en una pequeña herramienta que cabe en la palma de nuestra mano y con unos precios accesibles para cualquier persona. Objetivos y límites de esta guía El objetivo principal de esta guía es conocer la estructura y archivos de un proyecto Android, conocer el API y desarrollar aplicaciones sencillas. Esta guía explicará como desarrollar aplicaciones que van desde el clásico ejemplo hola mundo hasta construir nuestro propio reproductor multimedia, acceder a los datos de nuestro terminal, etc. Será imprescindible que tengamos conocimientos al menos a nivel Básico/Intermedio de Java ya que es el lenguaje usado para programar en Android. Al final de cada capítulo vendrán ejemplos resueltos para facilitar la comprensión y poner en práctica los conocimientos que vayamos adquiriendo de las aplicaciones que iremos desarrollando para iniciarnos en el mundo de la programación de Android. Es ante entender que esta guía no contempla todo el API de Android y que en más de una ocasión será necesario consultar tanto el API de este sistema como el de Java. A continuación tienes los enlaces necesarios. API de Android: http://developer.android.com/reference/packages.html API de Java: http://download.oracle.com/javase/6/docs/api/ Antes de comenzar es ante que como desarrollador estés al día, ya que Android es un sistema que esta en continuo desarrollo. Esta es una guía creada por programadores amateurs para sus homólogos o bien como medio de consulta indistintamente del nivel de su usuario.

5 Qué es Android? Android es un sistema encargado de centralizar todo tipo de herramientas y utilidades que un terminal móvil puede ofrecernos. Está desarrollado por Google y hace uso de el núcleo o kernel de Linux para administrar el sistema, Android sería para tu teléfono como Windows o una distribución GNU/Linux para tu ordenador. Si estás iniciándote en la programación o algunas de las siglas y/o terminologías no las conoces, antes de seguir te recomendamos que leas algunas de las bibliografías que indicamos en el último punto de este capítulo. Google como sistema móvil Quién no usa Google como buscador hoy día?, Google es el buscador más usado de Internet, aunque tiene grandes competidores como Yahoo o el nuevo buscador Bing de Microsoft, Google es el líder en este terreno. El sistema Android nos permite disponer de los distintos servicios que nos proporciona nuestra cuenta Google al alcance de nuestra mano en cualquier momento, ya sea para ver vídeos en YouTube, revisar nuestro correo con Gmail, localizar una dirección con GoogleMaps, etc. Todo esto es posible usando conexiones de alta velocidad como las redes HSDPA o usando una conexión Wi-Fi. Hasta ahora nos ha quedado más o menos claro que es Android, un sistema desarrollado por Google para dispositivos móviles, no exclusivamente teléfonos móviles inteligentes conocidos como SmarthPhones, hoy en día se utiliza Android tanto en reproductores cómo en las nuevas Tablets. Interfaz del sistema Una de las cosas a destacar sobre Android es su cómoda interfaz, la cual, cuenta con varios escritorios los cuales se pueden personalizar con multitud de Gadgets que nos ofrece el sistema y los incluidos en las aplicaciones que posteriormente instalemos. Su aspecto puede llegar a ser ligeramente similar al de cualquier otro sistema móvil, lo cual nos hará más liviana la transición si venimos de un terminal que disponga un sistema muy distinto a este. A simple vista podemos ver una barra que nos indica el estado de la batería, la hora, la cobertura, los eventos que se han producido e información sobre algunas de las aplicaciones que se estén ejecutando en segundo plano. Dispone de un menú desplegable al cual podremos acceder desde la parte inferior de la pantalla para visualizar a las aplicaciones que tengamos instaladas en nuestro sistema. Una vez nos hayamos acostumbrado a manejar nuestro terminal, podremos ver como su interfaz es una excelente simbiosis entre un sistema de escritorio y uno móvil. En la Tabla 1.1 podemos ver la evolución de su interfaz desde las primeras versiones de Android hasta una de las más recientes 2.3, también conocida como Gingerbread.

6 Tabla 1.1. Interfaz de Android. Home (Escritorio) Menú principal Envío de mensajes Versión 1.5 Versión 2.3 Algunas de estas versiones pueden encontrarse tanto en SmarthPhones como en Tablets. Con la aparición de estos últimos dispositivos, Google puso en el mercado una versión especialmente orientada a Tablets con Android, ya que estos dispositivos disponen de un hardware distinto y algunos pueden tener mayor potencia que los pequeños terminales, esta versión es conocida por el nombre de HoneyComb (Android 3.0). En la Tabla 1.2 podemos ver el aspecto de la interfaz de esta versión, que como

7 podremos observar es muy diferente al de sus antecesoras. Tabla 1.2. Interfaz de Android HoneyComb. Descripción Aspecto Gráfico Home (Escritorio) Menú Principal Como podemos ver el formato y resolución del sistema es distinto debido a que las Tablets disponen de una pantalla de mayor tamaño que los SmarthPhones. En el siguiente enlace puedes ver una demostración de este sistema: http://www.youtube.com/watch?v=daxm0-ha8o8 Otra de las cosas que debemos de tener en cuenta es que el sistema puede venir con una interfaz distinta a la diseñada por Google dependiendo de el fabricante de nuestro terminal y de el modelo, esta puede llegar a tener un aspecto completamente diferente, y la forma de interactuar con el dispositivo puede variar entre un terminal y otro aún usando la misma versión de Android. Una de las interfaces más famosas y aceptadas hoy día es la que utilizan los terminales de HTC, esta es llamada HTC Sense. En la Tabla 1.3 podemos ver algunas de las interfaces actualmente en el mercado

8 diseñadas por algunos fabricantes de dispositivos basados en Android. Tabla 1.3. Interfaces según fabricante. HTC Sense (HTC) TimeScape (SonyEricsson) TouchWiz (Samsung) Los fabricantes de terminales diseñan interfaces de usuario distintas a sus competidores para crear una experiencia única y respetar la homogeneidad entre sus distintos terminales. Fabricantes como HTC también usan su interfaz (HTC Sense) para terminales basados en Windows Phone. Este podría ser uno de los puntos a tener en cuenta a la hora de escoger uno de los terminales basados en Android, además cada una de estas interfaces están destinadas a un público determinado, ya que, podemos encontrarlas orientadas a las redes sociales, al contenido multimedia, etc. Una de las desventajas que presentan ante la interfaz por defecto de Android, es que para disfrutar de estas, el sistema deberá hacer mayor uso de la memoria disponible para poder ejecutarla. Android Market Donde puedo encontrar aplicaciones para mi teléfono?, al igual que los dispositivos de Apple como iphone, ipad y ipod disponen de la Apple Store, Android dispone de una herramienta que nos permite descargar de forma gratuita o mediante pago, el Android Market, desde el cual podemos obtener miles de aplicaciones que pueden convertir nuestro teléfono en una navaja suiza. En él encontraremos aplicaciones tales como brújulas, afinadores para instrumentos, lectores de noticias, aplicaciones para redes sociales, juegos, etc. En la Tabla 1.4 podemos ver el aspecto de Android Market desde un terminal y la versión para navegadores web.

9 Tabla 1.4. Android Market Android Market sobre Android Android Market desde un Navegador Una interesante característica es que nos avisará cuando alguna de nuestras aplicaciones tiene una nueva versión disponible. Cuando hayamos terminado el desarrollo de nuestra aplicación podremos colocarla en el Android Market. Un dato a tener en cuenta, es que los desarrolladores deberán pagar una cuota única para poder publicar aplicaciones en el Market. La Máquina Dalvik Si estas leyendo esta guía probablemente habrás trabajado anteriormente con Java, el cual necesita para poder ejecutar las aplicaciones la JVM (Java Virtual Machine). Una de las ventajas que tienen las Máquinas Virtuales es la posibilidad de ejecutar el código que desarrollemos en cualquier dispositivo independientemente de su hardware, siempre y cuando el sistema disponga de una Máquina Virtual, gracias a esto nos permite el desarrollo de aplicaciones multiplataforma. Acaso no es mejor escribir nuestro código una sóla vez y que este sea compatible para todos los terminales que deseen usarlo?. Android a diferencia de muchos de los sistemas móviles en el mercado actual no es una plataforma J2ME(Java 2 Micro Edition) con lo cual no hace uso de la JVM debido a las restricciones de propiedad intelectual que esta conlleva. Para poder ejecutar las aplicaciones que desarrollemos para Android escritas en Java necesitaremos una de las piezas fundamentales de este sistema que es la Máquina Virtual Dalvik (DVM), la cual ejecuta las aplicaciones en formato.dex a diferencia de la JVM que ejecuta los bytecodes de los archivos.class, aunque antes, para poder obtener el archivo.dex la herramienta dx de encarga de transformar los archivos.class de Java a este último. En la la Imagen 1.1 podemos ver de forma más gráfica el proceso.

10 Imagen 1.1. Proceso de obtención de archivos.dex Esta máquina esta optimizada para utilizar poca memoria, además otro punto ante es que las aplicaciones ejecutadas bajo el precisan del núcleo de Linux para la administración del sistema de archivos, la memoria, etc. Los SDKs de Android Al igual que Java, Android precisa de un SDK para el desarrollo de aplicaciones, el cual también esta compuesto de un conjunto de clases y librerías que necesitaremos y podremos reutilizar para las futuras aplicaciones que desarrollemos con el. En este punto hablaremos brevemente de otras herramientas complementarias para el SDK de Android. Pero qué es un SDK?, podríamos resumir en pocas palabras el SDK como un conjunto de herramientas que nos brindan todo lo necesario para el desarrollo de software en una plataforma o lenguaje determinado. Además de el SDK de Android también está el NDK (Native Development Kit), este Kit de Desarrollo nos permite la construir algunas partes de nuestras aplicaciones en código nativo, esto nos permite desarrollar aplicaciones de mayor complejidad. El NDK nos provee de un conjunto de herramientas para desarrollar librerías en código nativo usando C y C++. Suele utilizarse para el desarrollo de videojuegos. Ya que en esta guía no usaremos el NDK, si deseas conocer más acerca de esta herramienta puedes hacerlo desde la siguiente página: http://developer.android.com/sdk/ndk/overview.html

11 Bibliografías recomendadas antes de comenzar Hasta ahora hemos visto algunas de las características destacables de Android, pero antes de comenzar con el desarrollo hay algunos puntos a tener en cuenta: Haber desarrollado software en Java con anterioridad. Tener nociones básicas sobre Programación Orientada a Objetos. Es recomendable tener un terminal Android para testar nuestras aplicaciones. Usar guías alternativas, ya que en esta nos centraremos en la creación de aplicaciones que usan gráficos simples y contenido mutimedia. Si este capitulo te ha dejado con algunas dudas o no entendiste alguna terminología, es recomendable leer antes algunos manuales básicos sobre programación, especialmente sobre Java, ya que Android hace uso de él para el desarrollo de aplicaciones. A continuación puedes ver la bibliografía recomendable antes de comenzar. Aunque algunos libros tratan sobre el mismo tema, puedes alternar entre ellas para entender mejor algunos conceptos. Bibliografía recomendable: Java SE 6 F. Javier Moldes Teo ISBN: 9788441523487 Programador Certificado Java 2 - Martín Sierra, Antonio J. ISBN: 9788478979721 Java 6 - Fernández Lucas, Adrián ISBN: 8441522995 Android, Guía para desarrolladores Frank Ableson, Charlie Collins, Robi Sen ISBN: 97884415286822 También es recomendable el uso de Internet para determinadas consultas, el uso de foros, la página oficial del SDK de Android para estar al día sobre los cambios que este pueda tener. Estas son algunas páginas en las que podrás encontrar material que pueden serte de ayuda o si deseas profundizar en otros temas relativos a esta guía: Página oficial del SDK de Android: http://developer.android.com/sdk/index.html Guía útil sobre Android: http://www.sgoliver.net/blog/?p=1313 Grupo Google con algunos tutoriales: http://groups.google.com/group/desarrolladores-android Foro sobre Android: http://www.android-spa.com/index.php

12 Alternativas al SDK y utilidades Como en la gran mayoría de las plataformas no sólo hay una forma de desarrollar para esta. Programar para Android no es una tarea fácil, por ello surgen como alternativas otras herramientas de desarrollo basadas en lenguajes más comprensibles para los programadores nóveles como pueden ser lenguajes de programación visuales o mediante el uso conjunto de HTML con JavaScript e incluso PHP. En este capítulo hablaremos sobre estas herramientas y la posibles utilidades que nos agilizarán el proceso de desarrollo en Android. Este capítulo es de lectura opcional, ya que no es esencial en el desarrollo de esta guía. Desarrollo visual con AppInventor Una de las ideas más acertadas por parte de Google fue la posibilidad de desarrollar aplicaciones de forma fácil e intuitiva para todos. App Inventor nos permite crear pequeños programas de forma muy rápida, ya que en ningún momento tendremos que hacer uso de un lenguaje de programación en concreto, aunque sí tener conocimientos previos básicos a la hora de implementar las acciones o eventos que puedan generar nuestras aplicaciones. Desde nuestro navegador web podremos diseñar el aspecto que tendrán los formularios, los componentes tanto visuales como no que dispondrá, etc. A la hora de diseñar el comportamiento y como interaccionarán estos componentes lo haremos desde una pequeña aplicación que descargaremos desde la web de AppInventor. En la Imagen 2.1 podemos ver el aspecto que tiene la programación visual de AppInventor, como vemos no hacemos uso de ningún lenguaje de programación, sino de forma visual en forma de piezas de puzzle, esto puede facilitar la compresión de lo que hacemos si no somos duchos en la programación. Imagen 2.1. Diseñando el comportamiento del programa con AppInventor

13 Si estas interesado en esta alternativa de desarrollo en el siguiente enlace podrás acceder a AppInventor: http://appinventor.googlelabs.com Desarrollo Multiplataforma La gran mayoría de programadores que comienzan el desarrollo en una nueva plataforma se encuentran con una serie de problemas o dificultades, ya que en el mundo de la programación no hay un lenguaje universal que englobe todos y podamos usar para desarrollar indistintamente del sistema y hardware que usemos, para evitar o simplemente reducir el tiempo de aprendizaje de los programadores sobre una nueva plataforma, surgen el Desarrollo de Plataformas Cruzado (Cross Platform Development). Una de las principales ventajas es que nos permite crear nuestra aplicación una vez y portarla posteriormente a cualquier sistema, en este caso ya sea ios, Android, Blackberry, etc. Como bien sabrás, Java permite el desarrollo multiplataforma, podemos desarrollar un programa en Windows, compilarlo en este y ejecutarlo en Linux, MacOSX o viceversa. El problema de Java es que en algunas plataformas móviles esta limitado o no demasiado optimizado, por ello existen alternativas bastante interesantes basadas en la nube que hacen uso de lenguajes de marcado como HTML/XML y otros como JavaScript, CSS o PHP. Estos lenguajes a diferencia de lenguajes como C o Pascal, es que son interpretados (no necesitan ser compilados para ser ejecutados). En la Tabla 2.1 a continuación podemos ver algunas herramientas alternativas al SDK de Android que pueden ser realmente interesante si optas por un desarrollo multiplataforma basado en lenguajes como HTML, JavaScript y CSS: Tabla 2.1. Frameworks para desarrollo multiplataforma móvil Framework PhoneGap Rhomobile Appcelerator Características Sistemas Actualmente: Fácil de usar con conocimientos sobre HTML, CSS y JavaScript previos. ios, Android, Palm, BlackBerry y SymbianOS. Permite Acceso a Hardware. Soporta HTML5. Próximamente: WindowsPhone, Bada, MeeGo Desarrollo basado en Ruby. Permite Acceso a Hardware. Actualmente: ios, Android, BlackBerry y SymbianOS. Uso de HTML, JavaScript y CSS. Actualmente: ios, Android Próximamente: BlackBerry Si deseas obtener más información acerca de estos Frameworks en la siguiente página podrás encontrar una comparativa muy detallada acerca de estas y muchas más: http://www.amlcode.com/2010/07/16/comparison-appinventorrhomobile-phonegap-appcelerator-webview-and-aml/

14 DroidDraw Una de las partes esenciales hoy día en las aplicaciones son las interfaces gráficas, nos permiten que el usuario interactue de una forma cómoda y rápida. DroidDraw es una aplicación realmente útil si elegimos un IDE para desarrollar aplicaciones Android que no disponga de editor visual. Esta pequeña pero precisa herramienta nos sirve para diseñar las interfaces añadiendo los componentes al formulario y editando sus propiedades, obteniendo finalmente el código XML que nos generará el programa y que usaremos a la hora de definir la interfaz de usuario de cada una de las pantallas de nuestra aplicación. En la Imagen 2.2 podemos apreciar el aspecto de esta interesante herramienta. Imagen 2.2. Interfaz de DroidDraw Como podemos observar en la parte inferior derecha se encuentra el código que generamos al diseñar el formulario. Esta aplicación esta disponible desde su web: http://www.droiddraw.org/ en la cual podremos elegir entre una versión para ejecutar en nuestro sistema o bien utilizarla desde el navegador web.

15 Primeros pasos e instalación del SDK Una vez conozcamos las herramientas y utilidades de las que podemos disponer a la hora de desarrollar nuestras aplicaciones, es el momento de realizar la instalación de el SDK en nuestro equipo para comenzar a crear nuestras aplicaciones. Si no es la primera vez que realizas la instalación de el SDK en Netbeans o Eclipse puede saltar este capítulo. Antes de comenzar con la instalación conozcamos un poco antes a lo que nos enfrentaremos. Java como el lenguaje de programación para Android Como vimos en el capitulo anterior Java es el lenguaje que se usa para el desarrollo de aplicaciones para Android, ya que es un lenguaje seguro y gestiona mejor la memoria que otros lenguajes, y como Android es un sistema usado en terminales móviles estos dispondrán de una cantidad limitada de memoria, con lo cual, será necesario controlar el consumo de memoria que tendrán nuestras aplicaciones y como bien sabemos el Recolector de Basura de Java (Garbage Collector) es una herramienta que nos será de gran utilidad. Otra de sus ventajas es la gran cantidad de Clases que nos provee Java y que nos ahorrara algunas de las tarea rutinarias. Para los programadores experimentados en Java una de las desventajas que podremos encontrar al principio es que algunos de los paquetes y librerías han sido eliminadas, como por ejemplo javax.sound y javax.swing. Instalación del SDK de Android Antes de instalar el SDK de Android deberemos tener instalado el SDK de Java junto con la IDE que escojamos, Eclipse será la que usaremos en esta guía, pero también es posible usar la IDE de Netbeans para programar. En la siguiente dirección podrá descargar el JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.ht ml Eclipse será el IDE que usaremos en esta guía para desarrollar nuestras aplicaciones lo podremos descargar desde el siguiente enlace: http://www.eclipse.org/downloads/ Una vez tengamos el JDK junto la IDE escogida procedemos a descargar el SDK de Android de la siguiente dirección: http://developer.android.com/sdk/index.html

16 Descargado el SDK, nos posicionamos en el lugar donde hayamos descomprimido o instalado este y ejecutamos el archivo SDK Manager.exe, al iniciar la aplicación nos mostrará un listado de paquetes que deberemos de descargar para poder continuar con la instalación del SDK, presionamos en Accept All y luego en Install, en la imagen 3.1 podemos verlo más detalladamente. Imagen 3.1. Instalando el SDK de Android. Este proceso tardará unos minutos la primera vez, ya que tendrá que descargar todos los paquetes que necesitaremos utilizar. Una vez se hayan descargado todos los archivos procedemos a la creación de una Unidad Virtual (AVD: Android Virtual Device) que será como un emulador de un terminal Android con el cual realizaremos pruebas, para ello deberemos ir a la sección Virtual Devices de la ventana principal. En función de para que plataforma vayamos a programar seleccionamos el API que usaremos, presionamos en New y añadimos la descripción junto con las características que iremos añadiendo en la sección Hardware presionando el botón New... En la Imagen 3.2 podemos ver esta ventana. Imagen 3.2. Creación de una AVD.

17 Si queremos iniciar la AVD podremos hacerlo seleccionando esta y haciendo clic en Start... En algunos casos puede darnos un error como el siguiente: emulator: ERROR: no search paths found in this AVD's configuration. Weird, the AVD's config.ini file is malformed. Try re-creating it. Normalmente suele ser por problemas relacionados con los caracteres de la ruta donde se encuentra la AVD, podemos solucionar esto desde la consola cambiando el directorio de nuestra AVD: android move avd -n nombreavd -p C:\DirectorioNuevo Un dato ante es que para poder hacer uso de los comando Android en la consola deberemos antes haber indicado el Path en las variables de entorno de nuestro sistema. Una vez finalizados estos pasos tendremos instalado y configurado el SDK de Android en nuestro sistema. Qué IDE escoger? Uno de los grandes dilemas antes de comenzar con el desarrollo es la elección del IDE, evidentemente si estamos acostumbrados con una de las dos IDEs que veremos a continuación utilizaremos esta, ya que al conocer esta mejor, podremos comenzar antes con el desarrollo. Cabe destacar que una de las ventajas que tiene programar en Eclipse frente a una de las alternativas como puede ser NetBeans, es que el primero nos permite desarrollar de forma gráfica la interfaz de nuestras aplicaciones. Aunque NetBeans no disponga de diseñador en modo gráfico, como recordaremos en el capítulo anterior hablamos sobre DroidDraw el cual podemos usar como herramienta para un desarrollo rápido de la interfaz. En la imagen 3.3 podemos ver que aspecto tiene el editor gráfico en Eclipse. Imagen 3.3. Editor de interfaz gráfica en Eclipse.

18 Una vez nos hayamos decidido qué IDE usar procedemos a la instalación y configuración de la que hayamos escogido. Recordamos que esta guía usaremos Eclipse en el desarrollo de aplicaciones para Android ya que esta mejor preparada que otras IDE a la hora de programar apara Android. Configurar Eclipse para la utilización del SDK Eclipse es sin duda una de las alternativas favoritas para el desarrollo multilenguaje y multiplataforma, ya que nos permite adaptar el IDE a nuestro gusto basándose en el uso de plugins, nosotros en nuestro caso deberemos instalar el plugin ADT que será necesario para poder hacer uso del SDK de Android en Eclipse. Lo primero que deberemos de hacer una vez descargado Eclipse será escoger el directorio principal que tendrán nuestros proyectos, a continuación una vez iniciada la interfaz de Eclipse nos dirigimos a Help>Install New Software... seguidamente hacemos click en Add... se abrirá una ventana en la cual deberemos rellenar los campos de la siguiente forma: Name: Android Location: https://dl-ssl.google.com/android/eclipse/ En la Imagen 3.4 podemos verlo más claro. Imagen 3.4. Instalando ADT Esperaremos unos segundos para que cargue el listado y luego seleccionaremos Developer Tools y presionaremos Next y Aceptaremos las condiciones de uso y finalizando el asistente, si durante el proceso de instalación nos muestra un mensaje de advertencia haremos click en OK, después del proceso de instalación nos pedirá que

19 reiniciemos Eclipse para ellos presionaremos en Restart Now. Una vez vuelva a iniciarse Eclipse procederemos a configurar la localización en nuestro equipo de la carpeta donde tenemos el SDK de Android, para esto iremos a Window>Preferences en la nueva ventana haremos click en Android y en el campo SDK Location presionando el botón Browse... seleccionaremos el directorio donde se haya el SDK de Android, hacemos click en Apply y en OK. En la Imagen 3.5 vemos con mejor detalle este parte del proceso. Imagen 3.5. Seleccionando el directorio del SDK de Android. Con esto el SDK de Android estará instalado en Eclipse, para crear un proyecto nuevo iremos a File>New>Project... y en la nueva ventana en Android>Android Project click en Next y rellenamos los datos que nos pide el formulario escogiendo la plataforma para la cual programaremos. Familiarizarse con la interfaz de Eclipse Como comentamos en los puntos anteriores Eclipse será la IDE con la que trabajaremos en esta guía con lo cual antes de comenzar a programar deberemos de conocer mejor su interfaz para facilitarnos las tareas rutinarias a la hora de codificar. Como apreciaremos a simple vista el aspecto no difiere mucho entre los distintos IDEs que hay en el mercado, generalmente tienen un marco para editar código, un explorador del proyecto con los archivos que dispone este, un log sobre los errores o advertencias que nuestro proyecto pueda generar y un visor que nos informa de forma resumida el contenido de las clase actual en la que estamos. Otra de las opciones que están disponibles tanto para Netbeans como para Eclipse es la posibilidad de descargar el paquete de idiomas para traducir su interfaz, pero en esta guía usaremos esta en inglés, ya que por defecto esta viene en dicho idioma y el uso de la interfaz en distintos idiomas al original puede crearnos quebraderos de cabeza al

20 buscar una opción o menú en el IDE. En la Imagen 3.6 vemos el aspecto de Eclipse y como sería el código generado que nos aparece por defecto en cada nuevo proyecto. Imagen 3.6. Proyecto Android en Eclipse. En la imagen podemos apreciar mejor el aspecto de Eclipse, como podemos ver no es muy diferente al aspecto que tiene cualquier IDE excepto por ciertos detalles que hacen únicas a cada una de estas. Al igual que la gran mayoría, Eclipse tiene auto-completado de código para agilizar la codificación, Identado de código podremos realizar desde Source>Format. También podemos ver el contenido de nuestras clases (sus atributos, métodos, etc.), desde Outline. Un dato a tener en cuenta es que desde el icono que podemos encontrar en la barra de herramientas accederemos directamente al AVD Manager para gestionar nuestras Máquinas Virtuales de Android. En la parte superior derecha podremos observar unos botones que nos servirán para cambiar de perspectiva lo cual detallaremos a continuación. Perspectiva Java y DDMS A la hora de programar necesitaremos tener distintos tipos de vistas también conocidas como perspectivas las cuales estarán orientadas a la codificación y pruebas, nosotros a la hora de programar en Android usaremos dos tipos distintos de vistas que serán la perspectiva Java y la DDMS.

21 La perspectiva Java es la que hemos visto en la Imagen 3.6, está destinada a la fase de codificación de nuestra aplicación, en ella implementaremos el código fuente de nuestra aplicación, exploraremos las distintos paquetes que componen que esta pueda tener y visualizaremos los errores que se puedan producir al compilar. Por otra parte tenemos la perspectiva DDMS (Dalvik Debug Monitor Server) que nos proporciona una interfaz para controlar las AVD que tenemos en ejecución, en ella podremos hacer cosas tales como por ejemplo desde la ventana Emulator Control emular el envío de mensajes o llamadas de voz a nuestra AVD para realizar pruebas con las aplicaciones que desarrollemos, desde File Explorer ver los archivos que tienen los directorios de nuestra máquina virtual e incluso eliminar las aplicaciones que hayamos instalado en ella las cuales se encuentran en el directorio /data/app/. En la Imagen 3.7 puedes apreciar mejor el aspecto de la perspectiva DDMS. Imagen 3.7. Proyecto Android en Eclipse. Para finalizar se recomienda antes de comenzar a leer el próximo capítulo familiarizarnos lo mejor que podamos con Eclipse o el IDE que hayamos escogido, ya que a partir de este capítulo, comienza la tarea de aprendizaje sobre todo lo que compone el SDK de Android y la fase de codificación de nuestro software, para aprender más acerca de su IDE es recomendable que visite la página web o consulte alguna guía especializada.

22 Conociendo Android Una vez tengamos configurado Eclipse podremos comenzar a desarrollar nuestras aplicaciones, pero antes, debemos conocer un poco como esta organizado Android y que nos puede ofrecer a la hora de programar en esta plataforma. En este capítulo hablaremos sobre algunos conceptos básicos y necesarios para el desarrollo en Android. Estructura de un proyecto Android Como en todo proyecto, este deberá tener un orden y una estructura predefinidos para que el desarrollo no se convierta en algo caótico. Cada vez que crees un nuevo proyecto Android podrás ver como se crea una estructura como la que puedes ver en la Imagen 4.1. Imagen 4.1. Aspecto de la estructura de un proyecto. A continuación puedes ver cual es la funcionalidad de algunos de estos antes elementos. Carpeta /src/ En este directorio se almacenará todo el código fuente de nuestra aplicación, Clases, Interfaces, etc. Carpeta /res/ En ella almacenaremos archivos multimedia ya sean imágenes, vídeo, animaciones o bien datos como cadenas de caracteres, etc. En esta carpeta podremos encontrar las siguientes subcarpeta cada vez que generemos un proyecto Android: /res/drawable/ Son una serie de carpetas: /res/drawable-hdpi, /res/drawable-mdpi y /res/drawable-ldpi en ellas se encuentran almacenados los recursos que se utilizarán dependiendo de la resolución del dispositivo Android, un claro ejemplo serían los iconos e imágenes de la aplicación.

23 /res/layout/ Esta carpeta contiene el aspecto de las distintas pantallas que tendrá la interfaz de nuestra aplicación. /res/values/ Contiene recursos como pueden ser cadenas de texto, estilos, colores, etc. /res/anim/ En esta carpeta se definen las animaciones utilizadas por la aplicación. /res/menu/ En ella definiremos los menús de la aplicación. /res/xml/ Contiene archivos xml que tendrá nuestra aplicación como por ejemplo los AppWidget Provider. /res/raw/ Contiene los archivos adicionales que utilicemos en nuestra aplicación, como por ejemplo archivos de audio. Carpeta /gen/ Aquí encontraremos una serie de ficheros que serán generados de forma automática cada vez que creemos un nuevo proyecto. Uno de los recursos más antes que podremos encontrar en esta carpeta es el archivo R.java este genera automáticamente una serie de constantes con los identificadores de los recursos que se encuentran en la carpeta /res/. Es recomendable que no se edite manualmente el archivo R.java. Carpeta /assets/ Esta carpeta contendrá los ficheros auxiliares que necesitemos para nuestra aplicación como por ejemplo ficheros de datos, de configuración, anotaciones, etc. Fichero AndroidManifest.xml Este es uno de los ficheros más antes de nuestro proyecto, en el se encuentran definidos el nombre, icono, versión. Otra de sus funcionalidades es la de gestionar los permisos necesarios para ejecutar nuestra aplicación, definir las Activity que tendrá nuestra aplicación, etc. En los próximos capítulos veremos un poco mejor su funcionamiento. Nota Algunas de las carpetas citadas anteriormente como /res/anim/, /res/menu/, /res/xml/ y /res/raw/ no son generadas automáticamente si no cuando añadimos recursos adicionales a nuestra aplicación.

24 Una vez nos hayamos hecho una idea de como van organizados los recursos en Android nos faltará menos para comenzar con el desarrollo de nuestra primera aplicación, pero antes de esto deberemos conocer algunos conceptos necesarios como son los Intents, Service, etc. Activity Como todos sabemos una aplicación consta de más de una pantalla, una forma de entender que es el elemento Activity sería comparándolo con una de estas pantallas visibles. Generalmente una aplicación suele disponer de más de una de estas Activity cada una de ellas destinadas a ejecutar las funciones que su programador haya decidido. Los elementos Activity se extienden a través de las clases que el usuario genere. En el Código 4.1 citado a continuación puedes ver como se implementa una Activity en Android. Código 4.1. Activity básica. package desarrollo.android.capitulo4; android.app.activity; android.os.bundle; public class Main extends Activity { @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); Si observamos el código de ejemplo anterior veremos como la clase Main amplía la clase Activity. Cada vez que creemos una aplicación Android en Eclipse nos generará un código como este si hemos marcado la opción de crear una Activity. Una de las principales funciones de las Activity será como comentamos anteriormente la de visualizar las IU con la ayuda de la clase View y de los archivos XML en los que definiremos el aspecto de estas. Más adelante hablaremos cual es la función de los demás métodos citados en el código y como navegar entre las distintas Activity que creemos. Si ejecutamos el proyecto que nos genera Eclipse cada vez que creamos uno nuevo sin alterar el código y habiendo optado por crear una Activity inicial veremos como este sería un claro ejemplo de "Hola Mundo" en Android. View Lo objetos View son los componentes básicos que se utilizan en las UI para que el usuario pueda interaccionar con esta, podriamos compararlo con los controles que nos

25 ofrece Java (Swing) o los que nos proporcionan la plataforma.net. Android nos prociona una gran variedad de controles básicos. En el siguiente capítulo veremos algunos de ellos y como se implementan en nuestras aplicaciones. Intent Las aplicaciones necesitan comunicarse internamente con los elementos que la componen o bien de forma externa con otras. Los Intent podamos interpretarlo como los mensajes o peticiones de distintos componentes que permiten la comunicación con nuestra aplicación u otras externas. A través de ellas podemos navegar en nuestras Activity usando por ejemplo el método startactivityforresult() perteneciente a la clase Activity, más adelante hablaremos más a fondo y veremos unos ejemplos que nos permitirán ver más claro su uso. Service Seguramente habrás escuchado anteriormente la palabra Servicio, básicamente consisten en programas que se ejecutan en segundo plano que no suelen disponer de una IU. Al igual que el elemento Activity podremos ampliar Service en nuestras clases. En el Código 4.2. puedes ver un ejemplo. Código 4.2. Implementando un Service. package desarrollo.android.capitulo4; android.app.service; android.content.intent; android.os.ibinder; android.widget.toast; public class Servicio extends Service{ @Override public void oncreate(){ Toast.makeText(this, "Servicio Creado", Toast.LENGTH_LONG).show(); @Override public IBinder onbind(intent arg0) { return null; Para iniciar nuestro Service deberemos hacerlo desde la Activity que queramos invocarlo utilizando el siguiente metodo startservice() pasando un Intent por parámetro.

26 ContentProvider Si deseamos compartir datos entre distintas aplicaciones necesitaremos implementar ContentProvider este implementa lo necesario para poder acceder a un almacén de datos para realizar operaciones de lectura o escritura. Gracias a ContentProvider podremos acceder a datos e incluso realizar consultas. Para acceder a los datos de un ContentProvider lo haremos a través de una URI Content, a continuación puedes ver un ejemplo: public static final Uri uricontent = Uri.parse("content://desarrollo.android.provider.ejemplo/archivodatos"); BroadcastReceiver Para la recepción de cualquier evento global como por ejemplo si estamos recibiendo una llamada telefónica, nos ha llegado un sms, etc. haremos uso de BroadcastReceiver. A la hora de implementar un BroadcastReceiver crearemos una clase que herede de esta y que se encargue de procesar a través del metodo abstracto onreceive() los Intents que puedan llegar. En el Código 4.3 puedes ver un ejemplo de como se implementa una clase que hace uso de BroadcastReceiver. Código 4.3. Implementando un BroadcastReceiver. package desarrollo.android; android.content.*; android.os.bundle; android.telephony.*; android.util.log; android.widget.toast; public class AvisadorMensajes extends BroadcastReceiver { private static final String TAG = "Mensaje Recibido"; @Override public void onreceive(context context, Intent intent) { Bundle pudsbundle = intent.getextras(); Object[] pdus = (Object[]) pudsbundle.get("pdus"); SmsMessage messages =SmsMessage.createFromPdu((byte[]) pdus[0]); Log.i(TAG, messages.getmessagebody()); Toast.makeText(context, "Mensaje Recibido : "+messages.getmessagebody(), Toast.LENGTH_LONG).show(); En este ejemplo mostraremos un Toast con el contenido del mensaje cada vez que recibamos uno. Para que esto pueda funcionar además deberemos dar permisos en el

27 archivo AndroidManifest.xml del que ya hablamos. En próximos capítulos trataremos los permisos en Android. Paquetes de Android Antes de finalizar este capitulo te mostramos algunos de los paquetes básicos que dispone el SDK de Android: android.app: Contiene las clases de Alto nivel de Android. En el podemos encontrar clases como Activity, Service, etc. android.content: Contiene las clases de Acceso y publicación de datos en la unidad. En este paquete podemos encontrar clases como Intent, BroadcastReceiver, etc. android.database: Contiene clases relacionadas con el manejo de datos. android.net: Contiene clases relacionadas con el acceso a red. En ella podemos encontrar la clase Uri que se utiliza para acceder a distintos tipos de recursos. android.graphics: Contiene clases de bajo nivel como Color, Canvas, etc. android.opengl: Clases relacionadas con OpenGL. Android.os: Provee clases para operaciones basicas de servicios a nivel del sistema. android.provider: ContentProvider. android.telephony: Clases relacionadas con funcionalidad telefonicas. android.text: Clases relacionadas con el renderizado de texto. android.util: Provee utilidades y metodos tales como la manipulacion de fechas, conversiones de numeros y cadenas y utilidades XML. android.view: Elementos relacionados con la IU como menús. android.webkit: Provee herramientas orientadas al navegador web. android.widget: Contiene las clases de relacionados con lo elementos de la IU. Esta clase la usaremos muy amenudo para implementar botones, visualizar imagenes, etc. En el próximo capítulo hablaremos sobre este paquete más a fondo. En ella encontramos clases relacionadas con

28 Añadir Ficheros a nuestra SD Virtual La gran mayoria de terminales Android disponen de ranura de expansión para tarjetas SD para almacenar cualquier tipo de archivos multimedia. Para que nuestra aplicación Android pueda manipular este tipo de datos deberemos añadir una tarjeta SD virtual a nuestra AVD. Para asignar una SD Card a nuestra Unidad Virtual de Android podemos hacerlo desde el AVD Manager seleccionando nuestra AVD y presionando sobre el botón Edit... En esta nueva ventana que puedes ver en la Imagen 7.1; en la sección SD Card seleccionaremos entre una de las opciones, o bien definir el tamaño o bien seleccionar un fichero externo que hayamos creado usando el siguiente comando de consola: mksdcard 512M nombretarjetasd Imagen 7.1. Edición de una AVD. Para añadir los archivo podemos hacerlo desde Eclipse en la vista DDMS en la pestaña File Explorer una vez que este inciada nuestra AVD, tan solo tendremos que arrastrar el archivo a la carpeta /sdcard/. Realizar este paso será ante para futuros capítulos ya que veremos como cargar imagenes y videos desde una tarjeta SD. Una vez hemos visto un poco por encima de que esta compuesto Android, en el próximo capítulo hablaremos sobre IU y al final de este veremos una aplicación de ejemplo para poner a prueba los conocimientos adquiridos a lo largo de estos capítulos.

29 Componentes Visuales Como todos sabemos hoy día toda aplicación que se precie tiene una interfaz de usuario, facilita el usabilidad de un programa, permite que se puedan realizar operaciones más rápido al tener todo al alcance de la vista y lo más ante nos permite llegar a un mayor número de usuarios ya que a diferencias de las interfaces de texto no requiere demasiados conocimientos para poder hacer uso de esta. En este capítulo veremos como definir estos componentes visuales que hoy día vemos en todas las aplicaciones; botones, menus emergentes, cajas de texto, etc. como implementarlos en nuestra aplicación haciendo uso de las clases que nos proporciona el paquete android.widget y al final del capítulo crearemos una pequeña aplicación con la que haremos uso de estos componentes. Layout A la hora de crear la interfaz de nuestra aplicación deberemos disponer los componentes en esta de una forma adecuada, para esta labor estan los Layout esto nos permitirá que los elementos que compongan la IU tengan un orden y una disposición correctos. Como todo diseñador, antes de implementar la interfaz de nuestro programa, crearemos antes algunos bocetos que nos permitan enfocarnos en el resultado final que esta tendrá y nos ayudará a dedicidirnos por cual Layout utilizar. Android nos proporciona varios tipos de Layout algunos de los cuales pueden ser: LinearLayout: A través de de este tipo de Layout, los componentes iran ordenados de forma consecutiva según la orientación: Horizontal: de izquierda a derecha. Vertical: de arriba a abajo. RelativeLayout: Con este tipo podemos disponer los componentes de forma relativa a otros. FrameLayout: Se utiliza para bloquear una parte de la pantalla y mostrar en ella un único elemento. TableLayout: Nos puede ser de utilidad para definir interfaces en el que los componentes esten dispuestos en forma de tabla, para dividir estas en celdas usaremos TableRow. TableRow: Con este tipo podemos podemos subdividir un Layout en varios. AbsoluteLayout: Este tipo de Layout nos da mayor libertad al respecto ya que

30 nos permite disponer los componentes en la posición que deseemos de la pantalla. Las AbsoluteLayout no son recomendables por su poca portabilidad entre pantallas de distinta resolución ya que esta no se adapata de forma dinámica como las otros tipos. En la Tabla 5.1 podemos apreciar como se disponen los elementos según el tipo de Layout. Tabla 5.1. Tipos de Layout. LinearLayout RelativeLayout FrameLayout TableLayout TableRow AbsoluteLayout Como recordaremos las interfaces las definíamos en archivos XML en la carpeta /res/layout/. Para mostrar estas interfaces en pantalla deberemos llamar al método setcontentview() al cual pasaremos por parámetro el recurso Layout que deseamos visualizar. Para definir un Layout en un archivo XML usaremos su etiqueta correspondiente <LinearLayout>, <AbsoluteLayout>, <TableRow>, etc. junto con su identificador

31 y sus respectivos atributos. Al final del capítulo puedes ver un Layout definida. Controles Básicos Una vez conozcamos los distintos tipos de Layout llega el momento de conocer que componentes podemos utilizar sobre ellos, como estos son definidos primero en el fichero XML y como implementarlos en una Activity y manejar sus eventos que como veremos no se aleja demasiado a como se hace en Java. Button Como todos sabemos los botones son uno de los componentes más primitivos en las interfaces gráficas, para poder definir estos componentes en nuestro fichero XML utilizaremos la etiqueta <Button> dentro de la cual irán el identificador de dicho botón y sus propiedades a continuación tienes un ejemplo básico. <Button android:text="textoboton" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> Para comprender mejor el texto anterior analizaremos cada uno de sus fragmentos, como observamos entre comillas van definidos los valores de dichos atributos: android:text: Con esto definimos cual será el texto que mostrará dicho botón. android:id: Esto nos servirá para identificar de forma única cada uno de nuestros componentes. android:layout_width y android:layout_height: Lo utilizaremos para definir el altura y anchura que tendrá dicho componente, para darle un tamaño estático podemos usar la cantidad de pixels que utilizará, como por ejemplo: 45px. Hay una gran variedad de atributos que añadiremos si deseamos personalizar este. Una vez definido deberemos implementarlo en nuestra Activity y asignarle los eventos que necesitemos para hacer uso de él. En el Código 5.1 puedes ver resaltado en amarillo una implementación simple de un Button. Código 5.1. Implementando un Button en una Activity. package desarrollo.android.capitulo5; android.app.activity; android.os.bundle; android.widget.button; //Importamos la clase

32 android.widget.textview; android.view.view; public class Main extends Activity { private Button botonhola; //Creamos un Boton private TextView labelhola; //Creamos un TextView @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); //Mostramos el contenido del layout setcontentview(r.layout.main); //Asignamos el recurso al Button botonhola = (Button) findviewbyid(r.id.button1); //Asignamos el recurso al TextView labelhola = (TextView) findviewbyid(r.id.textview1); //Asignamos un Listener al Button botonhola.setonclicklistener(new View.OnClickListener() { public void onclick(view arg0) { //Cambiamos el texto del TextView al presionar labelhola.settext("has presionado el botón"); ); El código esta comentado para que puedas comprender que hace cada una de las líneas que hay a continación de este. Como puedes ver necesitaremos ar la clase Button que se encuentra en el paquete android.widget, otro dato imporante es que para hacer referencia al componente buscaremos usando el método findviewbyid() el identificador en el fichero R.java que como dijimos se encargaba de gestionar los recursos de lo que definamos en nuestros ficheros XML en la carpeta /res/layout/. TextView Son lo que conocemos generalmente como Labels, su proposito es el mismo, mostrar un mensaje informativo. En el Código 5.1 vimos un claro ejemplo de como se implementaba un Button y como este hacia uso de un TextView para mostrar un mensaje, generalmente la gran mayoria de los componentes se implementan de la misma forma. Para definir un TextView en un archivo XML al igual que cualquier otro componente utilizaremos su respectiva etiqueta en este caso <TextView>, lo identificaremos y le asignaremos sus atributos, a continuación puedes ver un ejemplo. <TextView android:text="textview" android:id="@+id/textview1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> Como podemos ver no hay practicamente ninguna diferencia con respecto a como

33 definir un Button pero como cada componente cada uno tendrá sus atributos específicos. Para implementarlo haremos uso de la clase TextView que se encuentra como el resto de componentes gráficos en el paquete android.widget. EditText Normalmente una de las muchas funciones que suelen tener todas las aplicaciones es la posibilidad de proporcionarles información de entrada con la cual realizaremos las acciones que veamos oportunas. Un EditText es un caja de texto como la que podemos ver en cualquier formulario web. Veamos a continuación un ejemplo de código XML: <EditText android:layout_height="wrap_content" android:text="edittext" android:id="@+id/edittext1" android:layout_width="fill_parent" /> Su etiqueta <EditText> al igual que el resto de componentes que hemos visto usa los mismos atributos básicos. CheckBox Este es otro componente típico en los formularios, las casillas de verificación bien conocidas en Android como en otras plataformas como CheckBox. Usaremos estos componentes cada vez que queramos marcar entre una o varias opciones en nuestra aplicación. A continuación puedes ver como se define un CheckBox en XML: <CheckBox android:text="checkbox" android:id="@+id/checkbox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" /> Si te fijas en el último atributo android:checked de la etiqueta <CheckBox>, este tiene el valor true con lo cual la CheckBox aparecerá marcado por defecto. RadioButton No hay demasiada diferencia entre un CheckBox y un RadioButton, salvo que este último sólo permite la elección de una opción entre las posibles, se define en XML prácticamente igual que el CheckBox: <RadioButton android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/radiobutton1" android:text="radiobutton" android:checked="false" /> En este caso el atributo android:checked de la etiqueta <RadioButton>, aparece