Está en la página 1de 20

1. Qu es Android SDK?

Un kit de desarrollo de software o SDK (siglas en ingls de software development kit)


es generalmente un conjunto de herramientas de desarrollo de software que permiten al
programador crear aplicaciones para un sistema concreto, por ejemplo ciertos paquetes
de software, frameworks, plataformas de hardware, ordenadores, videoconsolas,
sistemas operativos, etc.
El SDK de Android proporciona las bibliotecas API y herramientas de desarrollo
necesarias para crear, probar y depurar aplicaciones para Android.
El SDK de Android separa herramientas, plataformas y otros componentes en paquetes.
2. Interfaz de programacin de aplicaciones ( API )
Interfaz de programacin de aplicaciones o API es el conjunto de funciones y
procedimientos que ofrece cierta biblioteca para ser utilizado por otro software como
una capa de abstraccin. Son usadas generalmente en las "libreras".
Es una fuente de cdigo basado en la especificacin destinada a ser utilizada como una
interfaz de componentes de software para comunicarse entre s.
Una API puede incluir especificaciones para las rutinas y estructuras de datos, las clases
de objetos y variables.
Una API difiere de una interfaz de aplicacin binaria (ABI) en la que el primero es de
cdigo abierto basado mientras que el segundo es una interfaz binaria.
2.1.

Niveles Android API

Comprender el enfoque general de la plataforma para la gestin del cambio de la


API. Tambin es importante entender el identificador del nivel de la API y el papel
que desempea en la consecucin de la compatibilidad de la aplicacin con los
dispositivos en los que puedan estar instalados.
2.2.

Cul es el nivel de la API?

Nivel API es un valor entero que identifica de forma exclusiva la revisin de la API
marco que ofrece una versin de la plataforma Android. La plataforma Android
ofrece una API de marco en el que las aplicaciones pueden utilizar para interactuar
con el sistema Android subyacente.
La API de marco consiste en:
Un conjunto bsico de paquetes y clases.
Un conjunto de elementos y atributos XML para la declaracin de un archivo
de manifiesto.
Un conjunto de elementos y atributos XML para la declaracin y el acceso a
los recursos.
Un conjunto de Intenciones.

Un conjunto de permisos que pueden solicitar aplicaciones, as como


refuerzos de permiso incluido en el sistema.
Cada versin sucesiva de la plataforma Android pueden incluir actualizaciones de la
aplicacin de Android API de marco de trabajo que se ofrece.
La siguiente tabla especifica el nivel de API con el apoyo de cada versin de la
plataforma Android:
Versin de plataforma
Android 6.0
Android 5.1
Android 5.0

Nivel API
23
22
21

Cdigo de Versin
M
LOLLIPOP_MR1
LOLLIPOP

Android 4.4W

20

KITKAT_WATCH

Android 4.4
Android 4.3
Android 4.2, 4.2.2
Android 4.1, 4.1.1

19
18
17
16

Android 4.0.3, 4.0.4

15

KITKAT
JELLY_BEAN_MR2
JELLY_BEAN_MR1
JELLY_BEAN
ICE_CREAM_SAND
WICH_MR1
ICE_CREAM_SAND
WICH
HONEYCOMB_MR2
HONEYCOMB_MR1
HONEYCOMB
GINGERBREAD_M
R1

Android 4.0, 4.0.1, 4.0.2

14

Android 3.2
Android 3.1.x
Android 3.0.x
Android 2.3.4
Android 2.3.3
Android 2.3.2
Android 2.3.1
Android 2.3
Android 2.2.x
Android 2.1.x
Android 2.0.1
Android 2.0
Android 1.6
Android 1.5
Android 1.1
Android 1.0

13
12
11

2.3.

10

Notas
API Changes
Platform Highlights
KitKat for Wearables
Only
Platform Highlights
Platform Highlights
Platform Highlights
Platform Highlights
Platform Highlights

Platform Highlights
Platform Highlights

Platform Highlights
9

GINGERBREAD

8
7
6
5
4
3
2
1

FROYO
ECLAIR_MR1
ECLAIR_0_1
ECLAIR
DONUT
CUPCAKE
BASE_1_1
BASE

Platform Highlights
Platform Highlights
Platform Highlights
Platform Highlights

Usos de nivel API de Android

El identificador de nivel API tiene un papel clave para garantizar la mejor


experiencia posible para los usuarios y desarrolladores de aplicaciones:
Permite a la plataforma Android describir la revisin mxima API marco que
soporta.
Permite aplicaciones describen la revisin API marco que requieren.

Permite que el sistema de negociar la instalacin de aplicaciones en el


dispositivo del usuario, de modo que las aplicaciones de versiones
incompatibles no estn instalados.
Cada versin de la plataforma Android almacena su identificador de nivel API
internamente, en el sistema Android en s.
Las aplicaciones pueden utilizar un elemento manifiesto proporcionado por la API
de marco - <use-sdk> - para describir los niveles mximos de la API (en las que son
capaces de ejecutar) y mnimo, as como el nivel de API preferido que estn
diseados para soportarlo. El elemento ofrece tres atributos clave:

android: minSdkVersion - Especfica el nivel mnimo de la API en el que la


aplicacin es capaz de ejecutar. El valor por defecto es "1".
android: targetSdkVersion -Especfica el nivel de API en la que la
aplicacin est diseada para funcionar. En algunos casos, esto permite a la
aplicacin utilizar elementos manifiestos o conductas definidas en el nivel
API de destino, en lugar de limitarse a usar solamente los definidos para el
nivel API mnimo.
android: maxSdkVersion - Especfica el nivel mximo de la API en el que
la aplicacin es capaz de ejecutar. Importante: Por favor lea la <use-sdk>
documentacin antes de utilizar este atributo.
3. Qu es gradle?
Gradle es una herramienta de automatizacin de la construccin de nuestro cdigo que
bebe de las aportaciones que han realizado herramientas como ant y maven pero intenta
llevarlo todo un paso mas all. Para empezar se apoya en Groovy y en un DSL
(Domain Specific Language) para trabajar con un lenguaje sencillo y claro a la hora de
construir el build comparado con Maven. Por otro lado dispone de una gran flexibilidad
que permite trabajar con ella utilizando otros lenguajes y no solo Java. Dispone por otro
lado de un sistema de gestin de dependencias slido.

Una de las
caractersticas que hacen a Gradle tan sencillo de usar, es que los scripts usan un
lenguaje especfico de dominio (Domain-Specific Language, DSL) que extiende el
lenguaje de programacin Groovy. Esto le da a Gradle a la vez sencillez y poder, ya que
en los scripts se pueden utilizar elementos tanto de programacin orientada a objetos
como de programacin funcional. Gradle cuenta tambin con una arquitectura de
plugins y de entrada ofrece varios muy tiles: para compilar proyectos Java, proyectos
Groovy (y por supuesto hbridos Java+Groovy), crear artefactos para publicar en
repositorios Maven, generar documentacin tcnica (Javadoc/Groovydoc), realizar
pruebas unitarias y generar reportes con los resultados, etc. Y por supuesto, cuenta con
una API para que terceros puedan crear sus propios plugins.
4. Qu son las vistas?
Vistas son elementos grficos que se incluyen en las actividades y que permiten mostrar
informacin al usuario o permitir que ste interacte con la aplicacin.
Son la base del desarrollo de interfaces grficas en Android. Todos los elementos
grficos, comnmente llamados widgets o componentes en otros entornos, son subclases
de View. Otros elementos ms complejos, como agrupaciones de vistas o layouts
tambin heredan de esta clase. As pues, en Android, un botn ser una vista, as como
tambin un campo de edicin de texto.
4.1.

Clasificacin de las vistas

Entre los diferentes tipos de vistas que tiene Android, hay uno que tiene especial
relevancia: layout Se trata de una vista que puede contener a otras vistas. En
realidad no hay un nico diseo: disponemos de varios que se diferencian en la
forma en la que stos distribuyen las vistas que contienen por el rea visible de la
actividad. Porque, adems de permitirnos organizar las vistas de forma jerrquica

dentro de la actividad, el principal objetivo de los diseos es controlar dnde se sita


y qu tamao tiene cada vista que se muestra en pantalla.
Por otro lado, a las vistas que muestran informacin en la actividad y/o permiten la
interaccin con el usuario se las denomina widgets.
Tanto los diseos como los widgets se representan en Android como clases Java que
heredan de la clase View (en realidad, los diseos heredan de la clase
ViewGroup que,
a
su
vez,
hereda
de
la
clase View).
Las
clases View y ViewGroup se encuentran en el paquete android.view, mientras que
las vistas (diseos y widgets) se sitan en el paquete android.widget.
4.1.1.

Una view es un objeto cuya clase es android.view.View. Es una


estructura de datos cuyas propiedades contienen los datos de la capa, la
informacin especfica del rea rectangular de la pantalla y permite
establecer el layout. Una view tiene: layout, drawing, focus change,
scrolling,
etc.
View:

La clase view es til como clase base para los widgets, que son unas
subclases ya implementadas que dibujan los elementos en la pantalla. Los
widgets contienen sus propias medidas, pero puedes usarlas para construir tu
interfaz ms rpidamente. La lista de widgets que puedes utilizar incluyen
Text, EditText, InputMethod, MovementMethod, Button, RadioButton,
CheckBox, y ScrollView.

4.1.2. Viewgroups: Un
viewgroup
es
un
objeto
de
la
clase
android.view.Viewgroup, como su propio nombre indica, un viewgroup es
un objeto especial de view cuya funcin es contener y controlar la lista de
views y de otros viewgroups. Los viewgroups te permiten aadir estructuras
a la interfaz y acumular complejos elementos en la pantalla que son
diseccionados
por
una
sola
entidad.
La clase viewgroup es til como base de la clase layouts, que son subclases
implementadas que proveen los tipos ms comunes de los layouts de
pantalla. Los layouts proporcionan una manera de construir una estructura
para una lista de views.
4.2.

Qu son los Layout?

Un Layout es un contenedor de una o ms vistas y controla su comportamiento y


posicin. Hay que destacar que un Layout puede contener a otro Layout y que es un
descendiente de la clase View.
La siguiente lista describe los Layout ms utilizados en Android:
LinearLayout: se trata de un layout que organiza sus componentes en una
nica fila o una nica columna, segn ste sea horizontal o vertical,

respectivamente. Para establecer la orientacin podemos utilizar o bien el


atributo android:orientation en la definicin del layout en el archivo XML
(tomando como valor horizontal o vertical, siendo el primero el valor por
defecto) o mediante el mtodo setOrientation desde el cdigo. Un ejemplo de
layout de este tipo sera:

<?xml version="1.0" encoding="utf-8"?>


<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:text="red"
android:gravity="center_horizontal"
android:background="#aa0000"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1"/>
<TextView
android:text="green"
android:gravity="center_horizontal"
android:background="#00aa00"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="2"/>
<TextView
android:text="blue"
android:gravity="center_horizontal"
android:background="#0000aa"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="3"/>
<TextView
android:text="yellow"
android:gravity="center_horizontal"
android:background="#aaaa00"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="4"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:text="Primera fila"

android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView
android:text="Segunda fila"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView
android:text="Tercera fila"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>

Resultado de ejecutar
el cdigo.

TableLayout: Se trata de un layout que organiza sus elementos como una


rejilla dividida en filas y columnas. Se compone de un conjunto de
elementos de tipo TableRow que representan a las diferentes filas de la tabla.
Cada fila a su vez se compone de un conjunto de vistas. Existe la posibilidad
de tener filas con diferente nmero de vistas; en este caso la tabla tendr
tantas columnas como celdas tenga la fila que contenga ms vistas. La
anchura de una columna vendr definida por la fila que contenta la vista de
mxima anchura en dicha columna. Esto quiere decir que no tenemos
libertad para asignar valor al atributo android:layout_width, que debera
valer match_parent. S que podemos definir la altura, aunque lo ms habitual
ser utilizar el valor wrap_content para el atributo android:layout_height. Si
no se indica lo contrario esos sern los valores por defecto. Aunque no
podamos controlar la anchura de una columna, si que podemos tener
columnas de anchura dinmica, usando los mtodos setColumnShrinkable()
y setColumnStretchable(). El primero permitir disminuir la anchura de una
columna con tal de que su correspondiente tabla pueda caber correctamente
en su elemento padre. Por su parte, el segundo permitir aumentar la anchura

de una columna para hacer que la tabla pueda ocupar todo el espacio que
tenga disponible. Hay que tener en cuenta que se Introduccin al diseo de
interfaces grficas en Android 14 Copyright 2012-13 Dept. Ciencia de la
Computacin e IA All rights reserved. pueden utilizar ambos mtodos para
una misma columna; en este caso la anchura de la columna siempre se
incrementar hasta que se utilice todo el espacio disponible, pero nunca ms.
Otra opcin disponible es ocultar una columna por medio del mtodo
setColumnCollapsed.
El siguiente ejemplo muestra un TableLayout definido como recurso de la
aplicacin por medio de un fichero XML. Como se puede observar en el
cdigo se ha introducido un elemento View cuya nica funcin es de servir
de separador visual entre la segunda y la tercera fila:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableRow>
<Button
android:text="Uno"
android:padding="3dip" />
<Button
android:text="Dos"
android:padding="3dip" />
</TableRow>
<TableRow>
<Button
android:text="Tres"
android:padding="3dip" />
<Button
android:text="Cuatro"
android:padding="3dip" />
<Button
android:text="Cinco"
android:padding="3dip" />
</TableRow>
<View
android:layout_height="2dip"
android:background="#FF909090" />
<TableRow>
<Button
android:text="Seis"
android:padding="3dip" />
<Button
android:text="Siete"
android:padding="3dip" />
</TableRow></TableLayout>

Resultado de ejecutar el
cdigo.

RelativeLayout: Este layout es muy flexible; permite indicar la posicin de


un elemento en funcin de otros y de los bordes de la pantalla tambin
permite comenzar a situar los elementos en cualquiera de los cuatro lados del
contenedor e ir aadiendo nuevos elementos pegados a estos.
Ejemplo:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
mlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/etiqueta"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Escribe"/>
<EditText
android:id="@+id/entrada"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/editbox_backg
round"

android:layout_below="@id/etiqueta"/>
<Button
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/entrada"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dip"
android:text="OK" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/ok"
android:layout_alignTop="@id/ok"
android:text="Cancelar" />
</RelativeLayout>

Resultado de ejecutar el cdigo.

AbsoluteLayout permite indicar las coordenadas (x,y) donde queremos que


se visualice cada elemento. No es recomendable utilizar este tipo de Layout.
La aplicacin que estamos diseando tiene que visualizarse correctamente en
dispositivos con cualquier tamao de pantalla. Para conseguir esto, no es una
buena idea trabajar con coordenadas absolutas. De hecho, este tipo
de Layout ha sido marcado como obsoleto.

Ejemplo de AbsoluteLayout:

<AbsoluteLayout xmlns:android="http://schemas.
android:layout_height="match_parent"
android:layout_width="match_parent">
<AnalogClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="50px"
android:layout_y="50px"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Un checkBox"
android:layout_x="150px"
android:layout_y="50px"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Un botn"
android:layout_x="50px"
android:layout_y="250px"/>
<TextView
android:layout_width="wrap_content"

android:layout_height="wrap_content"
android:text="Un texto cualquiera"
android:layout_x="150px"
android:layout_y="200px"/>
</AbsoluteLayout>

FrameLayout posiciona las vistas usando todo el contenedor, sin


distribuirlas espacialmente. Este Layout suele utilizarse cuando queremos
que varias vistas ocupen un mismo lugar. Podemos hacer que solo una sea
visible, o superponerlas.Para modificar la visibilidad de un elemento
utilizaremos la propiedad visibility.
Ejemplo de FrameLayout:

<FrameLayout xmlns:android="http://schemas...
android:layout_height="mach_parent"
android:layout_width="match_parent">
<AnalogClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Un checkBox"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"

android:text="Un botn"
android:visibility="invisible"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Un texto cualquiera"
android:visibility="invisible"/>
</FrameLayout>

4.3.

Manejo de ids (android:id)

Se trata de un nmero entero que sirve para identificar cada objeto view de forma
nica dentro de nuestro programa, cuando lo declaramos a travs de un xml de
resource podemos hacer referencia a la clase de recursos R usando una @, esto es
imprescindible, ya que si no podremos identificar nuestros elementos en nuestro
programa para despus usarlos y/o modificarlos, veamos algunos ejemplos:
android:id=@id/boton. Hace referencia a un id ya existente asociado a la
etiqueta boton, esto se usa para cuando usamos los Layout Relativos, ya
que para ubicar los elementos, lo hacemos indicando por ejemplo que un
botn lo insertamos a la derecha de otro, pues bien ese otro se pone as.
android:id=@+id/boton2. Esto crea una nueva etiqueta en la clase R
llamada boton2.
4.4.
Manejo de Eventos
Los eventos de usuario sirven para capturar la interaccin del usuario con una
determinada aplicacin. Existen varias maneras de realizarlo.
Hay tres siguientes conceptos relacionados con Android Gestin de Eventos
Los oyentes de eventos - Un detector de eventos es una interfaz en la clase View
que contiene un nico mtodo de devolucin de llamada. Estos mtodos sern
llamados por el marco de Android cuando la vista a la que el oyente se ha
registrado es desencadenada por la interaccin del usuario con el elemento de la
interfaz de usuario.
Los oyentes de eventos de registro - El registro de eventos es el proceso por el
cual un controlador de eventos se ha registrado en un detector de eventos para
que el manejador se llama cuando el detector de eventos desencadena el evento.
Controladores de eventos - Cuando ocurre un evento y hemos registrado y
detector de eventos para el evento, el detector de eventos llama a los
controladores de eventos, que es el mtodo que realmente controla el evento.

Los oyentes de eventos y controladores de eventos

Controlador de
eventos
al hacer clic()

Evento Listener y Descripcin

OnClickListener ()
Esto se llama cuando el usuario ya sea clics o toques o se centra
en cualquier tipo de artilugio como el botn, texto, imagen, etc
Usted usar onClick () controlador de eventos para manejar tal
evento.

onLongClick ()

OnLongClickListener ()
Esto se llama cuando el usuario ya sea clics o toques o se centra
en cualquier tipo de artilugio como el botn, texto, imagen, etc.,
para uno o ms segundos. Utilizar onLongClick () controlador
de eventos para manejar tal evento.

onFocusChange ()

OnFocusChangeListener ()
Esto se llama cuando el widget pierde su enfoque es decir, el
usuario se aleja del punto de vista. Utilizar onFocusChange ()
controlador de eventos para manejar tal evento.

OnKey ()

OnFocusChangeListener ()
Esto se llama cuando el usuario se centra en el elemento y
presiona o libera una clave de hardware en el dispositivo.Utilizar
OnKey () controlador de eventos para manejar tal evento.

onTouch ()

OnTouchListener ()
Esto se llama cuando el usuario pulsa la tecla, libera la tecla, o
cualquier gesto de movimiento en la pantalla. Utilizar onTouch
() controlador de eventos para manejar tal evento.

onMenuItemClick ()

OnMenuItemClickListener ()

Esto se llama cuando el usuario selecciona un elemento del


men. Utilizar onMenuItemClick () controlador de eventos para
manejar tal evento.
onCreateContextMenu
()

onCreateContextMenuItemListener ()
Esto se llama cuando se est construyendo en el men contextual
(como el resultado de una sostenida "clic largo)

4.4.1. Event Handlers


Si se est creando un componente de la clase View sobre cualquier tipo de Layout,
se pueden definir varios mtodos por defecto, denominados Event Handlers, que son
llamados cuando se produce un evento de cualquier tipo, como puede ser una
pulsacin sobre la pantalla.
A continuacin tenemos los Event Handlers ms comunes utilizados para manejar
los eventos:
onKeyDown(int, KeyEvent) - Se llama cuando ocurre un nuevo evento de
teclado.
onKeyUp(int, KeyEvent) - Se llama cuando se suelta una tecla.
onTrackballEvent(MotionEvent) - Se llama cuando un ocurre un evento
referente a cualquier movimiento del trackball.
onTouchEvent(MotionEvent) - Se llama cuando se toca la pantalla.
onFocusChanged(boolean, int, Rect) - Se llama cuando el view gana o pierde
el focus.
Existen otros mtodos que pueden impactar directamente en el manejo de los
eventos, que no forman parte de la clase View:
Activity.dispatchTouchEvent(MotionEvent) - Permite al Activity interceptar
todos los eventos referentes a tocar la pantalla antes de que se repartan a la
ventana.
ViewGroup.onInterceptTouchEvent(MotionEvent) - Permite
al ViewGroup controlar los eventos mientras se reparten a los Views hijos.
ViewParent.requestDisallowInterceptTouchEvent(boolean) - Se llama sobre
un View padre para indicar que no debera interceptar eventos tctiles
con onInterceptTouchEvent(MotionEvent).

4.4.2.Modo Tctil

Cuando el usuario est navegando por la interfaz de usuario con teclas direccionales
o con un trackball, es necesario darle el focus a los items accionables (como los
botones) para que el usuario pueda ver qu va a aceptar el input. Si el dispositivo
tiene capacidades tctiles y el usuario empieza interactuando con la interfaz
tocndola, entonces no es necesario destacar los items, ni darle el focus a un View
en particular. Este ser el llamado "modo tctil."
En un dispositivo tctil, una vez que el usuario toca la pantalla, el dispositivo entra
en
modo
tctil.
Desde
ese
momento,
slo
los
Views
con isFocusableInTouchMode() true podrn recibir el focus, como por ejemplo los
widgets editores de texto. Otros Views tctiles, como los botones, no recibirn el
focus cuando son tocados, lo que harn ser lanzar sus listeners on-click cuando son
pulsados.
En el momento en el que el usuario pulsa una tecla direccional o hace scroll con un
trackball, el dispositivo abandona el modo tctil y encuentra un view que agarre el
focus. En este momento el usuario puede recuperar la interaccin con la interfaz de
usuario sin tocar la pantalla.
El estado del modo tctil se mantiene durante todo el sistema (todas las ventanas y
actividades). Para obtener el estado en curso, se puede llamar al
mtodo isInTouchMode() para ver si el dispositivo est en modo tctil o no.
4.4.3.Manejar el focus

El framework manejar el movimiento rutinario del focus en respuesta al input del


usuario. Esto incluye cambiar el focus cuando se eliminan u ocultan los Views o
cuando se encuentra disponible un nuevo View. Los View indican si pueden recibir
el focus con el mtodo isFocusable(). Para cambiar que el View pueda recibir o no
el focus hay que llamar al mtodo setFocusable(). Cuando se est en modo tctil, se
puede
saber
si
un
View
permite
el
focus
mediante
el
mtodo isFocusableInTouchMode().
Se
puede
cambiar
esto
con setFocusableInTouchMode().
El movimiento del focus est basado en un algortmo que encuentra el vecino ms
cercano en una direccin dada. En algunas ocasiones, el algortmo por defecto puede
que no coincida con el esperado por el desarrollador. En estas situaciones, se pueden
sobreescribir
determinados
atributos
en
el
archivo
layout: nextFocusDown, nextFocusLeft, nextFocusRight, y nextFocusUp. Hay
que aadir uno de estos atributos al View a partir del cual parte el focus y definir el
valor del atributo para que sea el id del View al que hay que entregar el focus. Por
ejemplo:

<LinearLayout
android:orientation="vertical"
... >
<Button android:id="@+id/top"
android:nextFocusUp="@+id/bottom"
... />
<Button android:id="@+id/bottom"
android:nextFocusDown="@+id/top"
... />
</LinearLayout>

En este layout vertical, si navegamos hacia arriba a partir del primer botn no
iriamos a ningn lado, tampoco si navegamos hacia abajo desde el segundo
botn. Pero una vez que el botn superior ha definido el de abajo como el
nextFocusUp (y vice versa), el focus navegacional ir desde arriba hacia abajo y
desde abajo hacia arriba.
Si se quiere declarar en la IU un View como que puede recibir el focus (cuando
normalmente no lo hara), aadir el atributo XML android:focusable al View en
la declaracin del layout. Setear el valor true. Tambin se puede declarar un
View como que puede recibir el focus si est en modo tctil
con android:focusableInTouchMode.
Para pedir que un View en particular reciba el focus, llamar al
mtodo requestFocus().
Para escuchar a los eventos del focus (ser notificado cuando un View recibe o
pierde el focus) utilizar el mtodo onFocusChange(), como se detalla en la
seccin Listeners de Eventos.
4.5.

Controlador

Tambien conocido como Activity , Cada actividad esta implementada como una
simple clase Java que extiende (hereda) de la clase Activity de Android. Una
actividad se encargar de mostrar una interfaz de usuario o pantalla grfica,
compuesta de vistas (cada unos de los elementos de la pantalla), y de tratar los
eventos sobre estas vistas.
Una actividad (o Activity) es la componente principal encargada de mostrar al
usuario la interfaz grfica, es decir, una actividad sera el equivalente a una ventana,
y es el medio de comunicacin entre la aplicacin y el usuario. Se define una
actividad por cada interfaz del proyecto. Los elementos que se muestran en ella
deben ser definidos en el fichero xml que llevan asociado (que se guarda en
./res/layout) para poder ser tratados en la clase NameActivity.class, que hereda de la
clase Activity.

Dentro del fichero xml asociado a la actividad, se definen los elementos tales como
ubicacin de los elementos en la pantalla (layouts), botones, textos, checkbox, etc.
Las actividades tienen un ciclo de vida, es decir, pasan por diferentes estados desde
que se inician hasta que se destruyen. Sus 3 posibles estados son:

Activo: ocurre cuando la actividad est en ejecucin, es decir, es la tarea


principal
Pausado: la actividad se encuentra semi-suspendida, es decir, aun se est
ejecutando y es visible, pero no es la tarea principal. Se debe guardar la
informacin en este estado para prevenir una posible prdida de datos en
caso de que el sistema decida prescindir de ella para liberar memoria.
Parado: la actividad est detenida, no es visible al usuario y el sistema
puede liberar memoria. En caso de necesitarla de nuevo, ser reiniciada
desde el principio.
Una vez definido el ciclo de vida, hay que tener en cuenta qu mtodos son
importantes en cada uno de ellos. Aqu estn los mtodos ms importantes de una
actividad:
OnCreate (Bundle savedInstanceState): es el mtodo que crea la actividad.
Recibe un parmetro de tipo Bundle, que contiene el estado anterior de la
actividad, para preservar la informacin que hubiera, en caso de que hubiera
sido suspendida, aunque tambin puede iniciarse con un null si la
informacin anterior no es necesaria o no existe.
OnRestart(): reinicia una actividad tras haber sido parada (si contina en la
pila de tareas). Se inicia desde cero.
Onstart():
inmediatamente
despus
de
onCreate(Bundle
savedInstanceState), o de onRestart() segn corresponda. Muestra al usuario
la actividad. Si sta va a estar en un primer plano, el siguiente mtodo debe
ser onResume(). Si por el contrario se desarrolla por debajo, el mtodo
siguiente ser onStop(). Es recomendable llamar al mtodo
onRestoreInstanceState() para asegurar la informacin
OnResume(): establece el inicio de la interactividad entre el usuario y la
aplicacin. Solo se ejecuta cuando la actividad est en primer plano. Si
necesita informacin previa, el mtodo onRestoreInstanceState() aportar la
situacin en que estaba la actividad al llamar al onResume(). Tambin puede
guardar el estado con onSaveInstanceState().
OnPause(): se ejecuta cuando una actividad va a dejar de estar en primer
plano, para dar paso a otra. Guarda la informacin, para poder restaurar

cuando vuelva a estar activa en el mtodo onSaveInstanceState(). Si la


actividad vuelve a primer plano, el siguiente mtodo ser onResume(). En
caso contrario, ser onStop().
OnStop(): la actividad pasa a un segundo plano por un largo perodo. Como
ya se ha dicho, el sistema puede liberar el espacio que ocupa, en caso de
necesidad, o si la actividad lleva parada mucho tiempo.
OnDestroy(): es el mtodo final de la vida de una actividad. Se llama
cuando sta ya no es necesaria, o cuando se ha llamado al mtodo finish().
Adems de estos mtodos, cabe destacar dos ms, que son de vital importancia:
OnSavedInstanceState(): guarda el estado de una actividad. Es muy til
cuando se va a pausar una actividad para abrir otra.
OnRestoreInstanceState():
restaura
los
datos
onSavedInstanceState() al reiniciar una actividad.

guardados

en

onCreate()

onStart()

onResume()

onRestart ()

onPause()

onStop()

onDestroy()

Ciclo de vida de una Actividad


4.6.

Modelo
Nos referimos con modelo a las representaciones que construiremos basadas en
la informacin con la que operar nuestra aplicacin. En Java, el modelo viene
siendo anlogo a los beans que tienen la particularidad de ser reutilizables,

haciendo a nuestras aplicaciones escalables. En esta parte del modelo tambin


juega la decisin de qu modelo para almacenar informacin se utilizara. Base
de datos? Web services? El modelo que se elija depende obviamente de las
necesidades de informacin de la aplicacin.
5. CONCLUSIONES
Las actividades (activities) representan el componente principal de la interfaz
grfica de una aplicacin Android.
Una aplicacin en Android va a estar formada por un conjunto de elementos
bsicos de interaccin con el usuario, conocidos como actividades. Adems de
varias actividades una aplicacin tambin puede contener servicios.
El Android studio nos brinda un marco de trabajo en donde podemos ejecutar el
cdigo y visualizar tambien el resultado de este.
Layout es un contenedor de una o ms vistas y controla su comportamiento y
posicin adems puede contener a otro Layout y que es un descendiente de la
clase View
Los manejadores de eventos son llamados cuando se produce un evento de
cualquier tipo, como puede ser una pulsacin sobre la pantalla.
Los Layouts son medios por los que organizar vistas en la pantalla del
dispositivo. Existen diferentes tipos de layout que nos permitirn disponer los
elementos de la pantalla de diversas maneras.

También podría gustarte