5.5.-
Programación en Android: Activitys, intents, views, widgets.
En
este capítulo hablaré sobre algunos elementos con los que
trabajaremos en la programación con Android, algunos de estos
elementos, ya los hemos visto en otras plataformas y si no somos
nuevos en la programación, también los habíamos utilizado ya.
Estos componentes, en el mundo android, tienen unos nombres distintos
a los que estamos acostumbrados, y otros son nuevos términos, vamos
a verlos con un poco más de detalle:
ACTIVITYs
Las
actividades
(activities)
son los componentes principales de la interfáz gráfica de una
aplicación para android. En otros sistemas operativos vendrían
siendo las llamadas ventanas.
Normalmente se suele definir e implementar una activity para cada
ventana o pantalla de nuestra aplicación. Si nuestra aplicación
muestra 5 ventanas o Uis distintas, entonces normalmente tendríamos
5 activitys distintas, una controlar cada ventana.(*)
Las activitys pueden ser
ejecutadas o lanzadas de distintas formas, como pueden ser:
a) Designando una activity
para ser ejecutada (lanzada) en el fichero AndroidManifest.xml.
b) Lanzando una actividad a
través del contexto de la aplicación.
c) Lanzando una actividad hija
desde una principal esperando un resultado.
a) Designar una activity en
el fichero AndroidManifest.xml
Todas las aplicaciones de
Android deben designer una actividad para ser lanzada por defecto,
esta actividad la definimos en el archivo manifest. Si miramos el
manifiesto de nuestra aplicación "Hola Mundo Android",
en la pestaña "aplication" veremos lo
siguiente:
En
esta ventana podemos observar, que nuestra .HolaAndroidActivity,
tiene asociado el filtro de Intent tipo Launcher.
Éste intent és el que indica cuál es la activity que se lanzará,
pero puede haber más de una, como ya veremos.
b)
Lanzar las actividades a través del contexto de la aplicación.
Una
forma común de lanzar las actividades es utilizando el método
startActivity() del
contexto de la aplicación, y toma un parámetro llamado Intent. Por
ejemplo:
startActivity
(new Intent( getApplicationContext(), AyudaActivity.class));
Este intent
solicita la ejecución de la activity llamada AyudaActivity a
través de su clase. Evidentemente, esta clase debe ser
implementada en algún lugar del paquete. Y como la clase
AyudaActivity está definida dentro del paquete de la
aplicación, debe ser registrada como actividad dentro del archivo
manifest.
c)
Lanzar una actividad para esperar un resultado
A veces lanzamos las
actividades para determinar una elección del usuario y devolver la
elección a la actividad que la solicita, en este caso, la actividad
puede ser ejecutada utilizando el método
Activity.startActivityForResult(). El resultado se
devuelve en el parametro Intent de la actividad que llama al
método onActivityResult().
Las activitys pueden tener
varios estados, ya que pueden ser interrumpidas por otros eventos con
más prioridad, como por ejemplo una llamada de teléfono, y aunque
puedan ejecutarse varias aplicaciones, sólo una puede estar activa
en un determinado momento, osea, sólo una puede estar al frente de
la pantalla en un momento determinado.
Las aplicaciones de Android son
las responsables del manejo de sus estados, así como de su memoria,
recursos y datos. El sistema operativo Android puede finalizar
cualquier aplicación que se encuentre pausada, parada o destruida
siempre que le haga falta memoria. Esto quiere decir que cualquier
actividad que no esté en el frente está sujeta a ser finalizada,
así que debemos tener esto en consideración cuando hagamos nuestra
aplicación. Veremos estos estados con más detalle en el capítulo
"El ciclo de la vida (de una aplicación android)."
Para finalizar una aplicación
por nuestra cuenta, podemos hacer una llamada a alguna de las
versiones del método finish().
INTENTs
Un
intent
es un objeto que encapsula la petición de una tarea. Es el elemento
básico de comunicación entre los componentes del sistema operativo
Android. Otra forma de explicarlo sería diciendo que son como
mensajes o solicitudes que se envían los distintos componentes de
las aplicaciones.
A
través de los intents
podemos
ejecutar otra actividad, iniciar servicios, mandar mensajes
broadcast,
ejecutar
otras aplicaciones, pasar información a otras actividades... etc.
NOTA:
Un mensaje broadcast, es un tipo de mensaje global,
que se envía para interactuar con otras aplicaciones que quieran
recibirlo. No van destinados a una aplicación en concreto. Las
aplicaciones que reciben estos mensajes, deben haber creado un
broadcast
receiver,
que será el componente encargado de escuchar y reaccionar a esos
mensajes. Un ejemplo serían los mensajes de "batería baja",
que serán atendidos por cualquier aplicación que haya creado un
broadcast receiver para ese mensaje. Otro ejemplo de esto lo tenemos
en cualquier teléfono que tenga instalados varios programas para
abrir ficheros pdf, o varios navegadores. El sistema envía un
mensaje de que se quiere abrir este tipo de ficheros y aparece un
mensaje que muestra las aplicaciones que responden a él, para que
elijamos una.
Intents
para pasar datos entre actividades
Los
intents,
cuando
se utilizan para pasar datos entre actividades, deben incluir los
datos adicionales dentro del intent. Estos datos se llaman extras.
Para
empaquetar datos adicionales con el intent,
se utiliza el método putExtra()
con el tipo apropiado de objeto que queremos incluir. La convención
de android para estos extras es que cada uno sea nombrado con el
prefijo del paquete, por ejemplo:
com.blogspot.pafh99.cursoandroid.holaandroid.nombredelosExtras.
Otro
ejemplo:
Intent
miintent = new Intent (getApplicationContext(), AyudaActivity.class);
miintent.putExtra("com.blogspot.pafh99.cursoandroid.holaandroid.PAGINA",
5);
startActivity
(miintent);
Cuando
la clase AyudaActivity
se lanza, debe
ejecutar el método getIntent()
para recoger el
intent, entonces podremos acceder a la información extra con los
métodos adecuados.
Intent
intentLlamante=getIntent();
int pagina_de_ayuda = intentLlamante.getIntExtra
("com.blogspot.pafh99.cursoandroid.holaandroid.PAGINA", 1);
En
el caso de actividades que comenzasen otras subactividades a traves
del método startActivityForResult(),
el resultado se
pasa como un parámetro en el método onActivityResult()
con un parametro
de Intent. A
partir de ahí podemos extraer y utilizar los datos.
Intents para ejecutar otras
aplicaciones.
Normalmente
las aplicaciones sólo deberían lanzar las clases de actividades que
están definidas dentro de su propio paquete, pero con los permisos
adecuados tambien pueden lanzar actividades externas en otras
aplicaciones.
Por
ejemplo, podríamos crear intents para iniciar ciertas aplicaciones,
como puede ser el navegador y pasarle una URL. Lanzar el marcador
teléfonico y darle un número de teléfono, etc.
Veamos
como lanzar el navegador para ver una URL determinada:
Uri
direccion = Uri.parse("http://pafh99.blogspot.com");
Intent
navegar = new Intent (Intent.ACTION_VIEW, direccion);
startActivity
(navegar);
Con
este ejemplo, el navegador se ejecutaría y nuestra aplicación se
pondría en pausa, y cuando finalizasemos con el navegador, nuestra
aplicación volvería al frente.
VIEWs
Los objetos view son los
componentes básicos con los que construimos la interfáz gráfica de
nuestra aplicación, equivalen a los controles en otros lenguajes
visuales.
Una vista (View) ocupa
un área rectangular de la pantalla y es responsable de dibujarla y
de controlar sus eventos. Es la clase base para los widgets,
que son los que se utilizan para crear los componentes
interactivos de la interfaz de usuario. La subclase ViewGroup
es la clase base para los layouts, que son contenedores
indivisibles que pueden contener otras vistas (Views) o grupos
de ellas (ViewGroup) y definen sus propiedades de disposición
(layout)
Un ejemplo de estos serían los
botones, las listas desplegables, imágenes, etc. El sistema
operativo tiene unos cuantos, aunque también podemos crear o
personalizar unos propios.
Un objeto view
representa un widget que tiene una apariencia en
pantalla. Ejemplos:
Views Básicos: Usados
comunmente, como: TextView, EditText, Button...
Views de selección (Picker):
como los vistas (views): TimePicker, DatePicker
Views de Lista: Muestran listas
de elementos: ListView, Spinner....
Views de display: Muestran
imágenes: Fallery, ImageSwitcher...
Views de menús: Muestran
elementos adicionales o sensibles al contexto.
Views adicionales: otras vistas
como pueden ser: AnalogClock y DigitalClock.
Ya los iremos viendo con más
detalle a medida que comenzemos a desarrollar nuestra aplicación.
WIDGETs
Con los widgets podemos tener
algo de confusión, ya que en Android nos podemos referir a dos
cosas, los widgets como subclase de View (botones, listas
desplegables, etc), o los widgets como las aplicaciones que tenemos
en el escritorio del móvil (como el relój, un calendario, etc...).
Podemos agregarlos pulsando por un tiempo en la pantalla del móvil
(o del emulador).
Los widgets de aplicaciones
serían por ejemplo, los siguientes (1),
(2) y (3):
Y
los widgets, como subclases de View,
osea
elementos de la interfaz de usuario,
serían
los siguientes:
Ver.
1.0 – Revisión 5.1.2012
No hay comentarios:
Publicar un comentario