Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SEMANA 3
Activities e intents
Todos los derechos de autor son de la exclusiva propiedad de IACC o de los otorgantes de sus licencias. No está
permitido copiar, reproducir, reeditar, descargar, publicar, emitir, difundir, poner a disposición del público ni 1
ESTE
utilizarDOCUMENTO
los contenidos paraCONTIENE LAdeSEMANA
fines comerciales 3
ninguna clase.
2
ESTE DOCUMENTO CONTIENE LA SEMANA 3
ÍNDICE
3
ESTE DOCUMENTO CONTIENE LA SEMANA 3
OBJETIVOS ESPECÍFICOS
Describir los componentes básicos del SDK (widgets, como campos de texto, botones,
entre otros).
Identificar el uso de activities e intents en Android.
Caracterizar el uso de logcat en aplicaciones desarrolladas en Android.
INTRODUCCIÓN
Esta semana se comenzará con el trabajo de la primera aplicación de Android para la versión 2.3
(Gingerbread). Esta aplicación, si bien es cierto es muy básica, ayudará a explicar los conceptos
necesarios para poder trabajar en cualquier otra aplicación que se necesite realizar. Dentro de las
lecciones del presente curso, esta debe ser una de las más importantes, pues todo el desarrollo
Android gira en torno a estos conceptos.
El kit básico de construcción son los componentes que el desarrollador utiliza para construir
aplicaciones Android, los ítems conceptuales que se unen para crear algo más grande. Cuando el
desarrollador comienza a pensar en la aplicación, lo mejor es construirla desde la interfaz de
usuario hacia las capas más internas: se comienza con las pantallas, características y las
interacciones entre ellas. La idea es tener la visión general primero, ver cómo los componentes se
unen y darse cuenta de cómo al final todo tiene sentido.
Por ejemplo, Twitter: se sabe que el usuario debe ser capaz de escribir un mensaje y publicarlo,
además de ver lo que escriben sus contactos. Estas son características básicas. Más allá de eso, el
usuario podría ser capaz de escribir su nombre de usuario y password para autentificarse con su
cuenta. Hasta acá, la aplicación debiera tener estas tres pantallas por lo menos. En un nivel mayor
de abstracción, el usuario quisiera que la aplicación funcionara incluso con conexiones de red
inestables o incluso sin conexión. Para lograr eso, la aplicación debe traer los datos de Twitter
cuando está online y guardarlos en un caché local. En términos técnicos, se necesita un servicio
que se ejecute en segundo plano y una base de datos. Para mejorar la experiencia, se necesita que
el servicio en segundo plano se inicie cuando el dispositivo se encienda. De esta forma cuando el
usuario inicie la aplicación, la última versión de los datos ya estará disponible. Estos
requerimientos son directos. El kit de construcción básico hace que sea simple separar todo el
proyecto en unidades conceptuales, de manera tal que sea fácil trabajar en ellas de forma
independiente para después integrarlas en un paquete completo.
4
ESTE DOCUMENTO CONTIENE LA SEMANA 3
1. ACTIVIDADES
Una actividad es una pantalla que un usuario ve en un momento determinado. Una aplicación
típicamente tiene muchas actividades y el usuario las cambia a través del tiempo. De esta manera,
las actividades son la parte más visible de la aplicación.
Comparando con un sitio web: un sitio web puede estar constituido de muchas páginas. De la
misma manera una aplicación Android puede tener muchas actividades. Un sitio web tiene una
página de inicio, y asimismo una aplicación Android tiene una actividad principal (main), que es la
primera actividad que se ve al momento de iniciar la aplicación. Esta actividad, dentro del archivo
manifest es la única que tiene los siguientes elementos:
<actionandroid:name="android.intent.action.MAIN" />
<categoryandroid:name="android.intent.category.LAUNCHER" />
Siguiendo con la analogía de la web, un usuario puede cambiar de un sitio a otro. Similarmente en
Android un usuario puede usar la aplicación de Contactos, cambiar a la aplicación de Calculadora y
finalmente cambiar a la aplicación de Mensajería. A este flujo se le conoce como el “ciclo de vida
de la aplicación”.
Al momento de crear un nuevo proyecto Android, se genera una cierta cantidad de carpetas y
archivos estándar. En el contenido de la semana anterior se abordó el archivo
AndroidManifest.xml.
Esta semana se centra en la carpeta “java”, que contiene el código fuente de la aplicación, la
carpeta “res/layout”, que contiene la interfaz de usuario ligada al código java, y un archivo oculto
llamado “R.class”, que ayuda a unir el código fuente con la interfaz de usuario.
También se verá el contenido del archivo “build.grade” (el que está marcado como Module:app),
que tiene la configuración de cómo debe ser compilado un proyecto, para qué versiones de
Android y con qué bibliotecas.
5
ESTE DOCUMENTO CONTIENE LA SEMANA 3
Estructura de archivos de un proyecto Android
6
ESTE DOCUMENTO CONTIENE LA SEMANA 3
2.1.BUILD.GRADLE
Este archivo contiene toda la configuración que utilizará el compilador para generar la aplicación.
7
ESTE DOCUMENTO CONTIENE LA SEMANA 3
2.2.LAYOUT
Las siguientes imágenes muestran la interfaz de usuario de una aplicación de ejemplo y cómo luce
en formato XML:
En la parte superior derecha de la pantalla se puede observar un árbol que contiene los elementos
de la interfaz de usuario que están siendo utilizados (EditText, button y TextView). En la parte
inferior derecha están las propiedades del elemento seleccionado en el sector superior y en la
parte izquierda está la paleta completa de elementos que se pueden utilizar.
Los elementos de la paleta pueden ser arrastrados tanto a la interfaz de usuario (al centro de la
pantalla) como al árbol de controles de la derecha.
8
ESTE DOCUMENTO CONTIENE LA SEMANA 3
Código fuente de la interfaz de usuario
Este es el código XML de la interfaz vista anteriormente, aquí se puede editar las propiedades de
cada uno de los controles de forma manual. Se aprecia además que la interfaz de usuario está
hecha sobre un “RelativeLayout” (otras alternativas son LinearLayout [horizontal] y LinearLayout
[vertical]). RelativeLayout es la forma más versátil de disponer los elementos, pero a su vez la más
compleja. Cada elemento se sitúa dentro del Layout como si fuera una calcomanía, de tal forma
que al agregar un nuevo elemento este queda sobre el anterior. Es por esto que es obligatorio
darle un identificador a cada elemento de la interfaz (utilizando el elemento XML “android:id”), de
esta forma a cada nuevo elemento se le puede asignar un elemento android:layout_ que definirá
quiénes son sus vecinos. En la captura de pantalla superior, el elemento “Button” tiene nombre
“button” (android:id=”@+id/button”) y está debajo del elemento llamado “@id/editText”
(android:layout_below=”@id/editText”).
9
ESTE DOCUMENTO CONTIENE LA SEMANA 3
2.3.STRINGS.XML
El archivo de Strings contiene todas las palabras que se pueden utilizar a través de la interfaz
(aquellos valores que pueden asignarse en los atributos “android:text”). La idea es no repetir
palabras que puedan ser necesarias en otras partes de la aplicación, por ejemplo los textos
“Aceptar”, “Cancelar”, “Sí” o “No” de los botones.
Para usar estos strings, al atributo android:text de algún elemento de la interfaz debe asignársele
el valor “@string/nombre_del_string”. Por ejemplo, para que un botón diga “Saludar”, debe
escribirse de esta forma:
android:text=”@string/btn_saludar”
10
ESTE DOCUMENTO CONTIENE LA SEMANA 3
Cabe señalar que Android Studio reemplaza automáticamente los textos del tipo @string por su
valor del archivo strings.xml, pero solo por legibilidad.
Se puede deducir entonces que para los valores de los atributos de los elementos visuales se
pueden utilizar recursos tanto definidos por el desarrollador como existentes en el sistema
operativo utilizando “@” (@string, @color, @drawable, etc.).
2.4.EL ARCHIVO R
Este archivo es el encargado de integrar la interfaz del usuario y el código Java. Es generado
automáticamente y no debe ser modificado por el desarrollador. Se genera cada vez que hay algún
cambio dentro de la carpeta “res”, esto es, cada vez que se agrega un ícono, un string o una
interfaz de usuario completa.
Lo importante de este archivo es que genera un mapa de todos los elementos existentes en la
carpeta “res”. Este mapa está compuesto de números enteros y son estos números los que se
utilizan en el código Java para hacer referencia a algún control, palabra, ícono o color existente
dentro de la carpeta “res”.
2.5.CÓDIGO JAVA
El código Java es donde converge todo. Es donde el desarrollador le otorga el comportamiento a la
aplicación y orquesta todo lo que hizo en el XML.
11
ESTE DOCUMENTO CONTIENE LA SEMANA 3
Partes importantes de este código son:
Todas las actividades heredan de una única clase: Activity. Entonces es obligatorio crear una clase
que extienda a Activity. En el ejemplo:
Este método es el primero que se ejecuta luego de tocar el ícono de una aplicación. Todo lo que
sucede dentro de él se ejecuta mientras la aplicación está en primer plano: comportamiento
cuando se toca un botón, comportamiento cuando se toca un campo de texto (EditText), cálculos
que el desarrollador desee hacer, etc.
La llamada a este método es importantísima. Es la que une el archivo R (que contiene los índices
de la interfaz de usuario, de ahora en adelante layout) con el código Java. En el ejemplo la línea
dice:
setContentView(R.layout.activity_hello);
Este método retorna un objeto del tipo “View” desde el archivo R.class el control de la interfaz
definido por su R.id (el id que se le otorgó dentro del xml del layout al que pertenece).
12
ESTE DOCUMENTO CONTIENE LA SEMANA 3
En el ejemplo, el id del botón es “button”, entonces para poder trabajar con el botón dentro de
Java, se debe invocar:
findViewById(R.id.button);
Como findViewById() retorna una vista y todos los elementos visuales de Android son vistas, basta
con hacer un cast hacia el elemento que se necesita. Entonces el código queda:
Los botones no tienen un comportamiento por defecto y siempre se les debe asignar el método
setOnClickListener(). En el ejemplo esto se ve de la siguiente manera:
saludarButton.setOnClickListener(new View.OnClickListener() {
publicvoidonClick(View v) {
}
});
3. USO DE LOGCAT
Logcat es una herramienta del entorno de desarrollo a través de la cual se visualizan los mensajes
de Log que emite el sistema operativo, además de los mensajes que el desarrollador quiera
mostrar en él.
13
ESTE DOCUMENTO CONTIENE LA SEMANA 3
El objeto Log muestra en la consola del desarrollador (no en la aplicación) procesos o mensajes
respecto de lo que se está ejecutando. Existen tres tipos de Log:
El resto de las líneas tienen que ver con el manejo de texto. Algunos elementos de la interfaz de
usuario, como por ejemplo EditText, tienen métodos para obtener lo que se escribió dentro de
ellos (getText()), pero no aseguran que lo retornado sea un string. Por eso es necesario realizar la
conversión.
Así como existe getText() para obtener el string de algún elemento, también existe el método
setText() que permite escribir un string en ellos.
14
ESTE DOCUMENTO CONTIENE LA SEMANA 3
COMENTARIO FINAL
Esta semana se comenzó a trabajar dentro del entorno de desarrollo que se configuró en la
semana 1 y dentro del archivo manifest visto en la semana 2. Se incluyó la primera actividad de la
aplicación de ejemplo. También se profundizó en la programación haciendo la primera interfaz de
usuario y el primer programa funcional Android.
15
ESTE DOCUMENTO CONTIENE LA SEMANA 3
REFERENCIAS
Gargenta, M. (2011). Learning Android. California: O’Reilly.
16
ESTE DOCUMENTO CONTIENE LA SEMANA 3
17
ESTE DOCUMENTO CONTIENE LA SEMANA 3