8/18/2019 Introduccion a Android y Activities, Fragments e Intents
1/199
TODOS LOS DERECHOS RESERVADOS
El Framework de Android desde el
Punto de Vista del OESF
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
2/199
– ¿Qué es Android?
– Versiones de Android y sus características
– La arquitectura de Android
– Dispositivos Virtuales Android (AVD)
– Desarrollo de tu primera aplicación móvil con Android
– Estructura de una aplicación Android
Introducción a la Plataforma Android
2
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
3/199
• Android es un sistema operativo móvil que esta basado en una
versión modificada de Linux.
• En 2005, como parte de su estrategia de entrar al mundo móvil,
Google compró Android y tomo su desarrollo.
• Google estableció que Android fuera abierto y libre; así la mayoría del
código de Android fue liberado bajo la licencia Apache open-source.
• Los manufacturadores de hardware pueden agregar sus propias
extensiones a Android y personalizar Android para diferenciar sus
productos de otros.
¿Qué es Android ?
3
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
4/199
• Este simple modelo de desarrollo hace a Android muy atractivo y hadespertado el interés de muchas compañías tales como Motorola ySony Ericsson.
• Cuando el Iphone fue lanzado al mercado, muchas de estascompañías se vieron obligadas a encontrar nuevas formas de
revitalizar sus productos.
• Estos manufacturadores de hardware ven en Android una solución, elcual les permite continuar desarrollando sus equipos y utilizar Androidcomo el sistema operativo que potencialice estos.
• La principal ventaja de adoptar Android es que ofrece un enfoqueunificado para desarrollar aplicaciones. Los desarrolladoressolamente necesitan desarrollar para Android y sus aplicacionesdeberían ser capaces de ejecutarse en diferentes dispositivos.
¿Qué es Android ?
4
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
5/199
• La siguiente tabla muestra las versiones de Android y sus nombres-código:
Versiones de Android
5
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
6/199
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
7/199
• Aplicaciones escritas para versiones de Android anteriores a 3.0 soncompatibles con dispositivos Android 3.0. y se ejecutan sin realizar
modificaciones.
• Aplicaciones para tablets con Android 3.0 que hacen uso de las nuevas
características disponibles en 3.0, sin embargo, no serán capaces deejecutarse en dispositivos anteriores.
• En octubre de 2011, Google liberó Android 4.0 una versión que oriento
todas las características introducidas en Android 3.0 a los
Smartphones, junto con algunas nuevas características tales como:
– Desbloqueo a través de reconocimiento facial,
– Monitoreo y control de uso de datos
– Comunicación de campo cercano
Versiones de Android
7
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
8/199
• Android soporta las siguientes características:
– Almacenamiento: Utiliza SQLite, una base de datos relacional ligera, para
almacenamiento de datos.
– Conectividad: Soporte para GSM/EDGE, IDEN, CDMA, EV-DO, UMTS,Bluetooth, Wi-Fi, LTE, y WiMAX
– Mensajes: Soporta SMS y MMS
– Web Browser: Basado en Web kit junto con el motor de JavaScript V8
– Media: H.263, H.264 (in 3GP or MP4 container), MPEG-4 SP, AMR, AMR-
WB (in 3GP container), AAC, HE-AAC (in MP4 or 3GP container), MP3,
MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF, y BMP
Características de Android
8
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
9/199
Características de Android
– Hardware: Acelerómetro, Cámara, compas digital, sensor de proximidad y
GPS.
– Multi-touch: Soporta pantallas multi-touch
– Multi-tasking: Soporta aplicaciones multitareas
– Flash: Android 2.3 soporta Flash 10.1
– Tethering: Soporta conexiones a internet como un hotspotalámbrico/inalámbrico
9
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
10/199
• El sistema operativo Android es organizado en cuatro capasprincipales:
– Kernel de linux: Esta capa contiene todos los drivers del dispositivo debajo nivel para los diferentes componentes de hardware de un dispositivo Android.
– Librerías: Estas contienen todo el código que provee las característicasprincipales del sistema operativo Android.
– Android runtime: En la capa de librerías, el android runtime provee unconjunto de librerías core que permite a los desarrolladores escribir Apps Android usando Java. El Android runtime también incluye la máquinavirtual Dalvik, la cual permite a cualquier aplicación Android ejecutar suspropios procesos con son su propia instancia de la máquina virtual Dalvik.
Arquitectura de Android
10
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
11/199
Arquitectura de Android
– Framework de la Aplicación: Esta capa proporciona las distintas
capacidades del SO Android a los desarrolladores para la construcción de
aplicaciones móviles.
– Aplicaciones: Sobre esta capa se encuentran las aplicaciones que
compras con el dispositivo Android como también las aplicaciones que
descargas e instalas del Android market.
11
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
12/199
Arquitectura de Android
12
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
13/199
Crear Dispositivos Virtuales Android (AVD)
• El siguiente paso es crear un dispositivo virtual Android, el cual esutilizado para probar tus aplicaciones Android.
• Un AVD es una instancia de un emulador que te permite modelar un
dispositivo actual.
• Cada AVD consiste de una descripción de hardware del dispositivo, un
mapeo a una imagen de un sistema, almacenamiento emulado y
tarjeta digital segura.
• Se pueden crear tantos AVD como se requieran con el objetivo de
probar tus aplicaciones sobre diferentes configuraciones.
13
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
14/199
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
15/199
Crear Dispositivos Virtuales Android (AVD)
• En el diálogo del manejador del AVD, click al botón “New” para crearun nuevo AVD
15
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
16/199
Crear Dispositivos Virtuales Android (AVD)
• En el diálogo de crear nuevo AVD, introduce y selecciona loselementos que quieras tener en tu AVD.
16
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
17/199
Crear Dispositivos Virtuales Android (AVD)
• Para probar un AVD selecciona uno de la lista de la ventana dediálogo “Manejador de AVD” y click al botón de “Start”
17
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
18/199
Crear Dispositivos Virtuales Android (AVD)
18
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
19/199
Desarrollo de tu primera aplicación Android
1.- En Eclipse, crea un proyecto nuevo por seleccionar File NewProject
19
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
20/199
Desarrollo de tu primera aplicación Android
2.- Expande la carpeta de Android y selecciona Android Project Next
20
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
21/199
Desarrollo de tu primera aplicación Android
3.- Nombra al proyecto Android como HelloWorld y después click a Next
21
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
22/199
Desarrollo de tu primera aplicación Android
4.- Selecciona los siguientes elementos en la ventana que aparece
22
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
23/199
Desarrollo de tu primera aplicación Android
5.- La siguiente ventana muestra las opciones para configurar lascaracterísticas del icono de su aplicación
23
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
24/199
Desarrollo de tu primera aplicación Android
6.- Crea una actividad en blanco por seleccionar Blank Activity
Next
24
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
25/199
Desarrollo de tu primera aplicación Android
7.- Nombra a tu actividad MainActivity y al layout como activity_main
25
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
26/199
Desarrollo de tu primera aplicación Android
8.- El IDE de Eclipse debería mostrar la siguiente pantalla:
26
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
27/199
Desarrollo de tu primera aplicación Android
9.- En el explorador de paquetes expande el proyecto HelloWorld. En lacarpeta de res/layout hacer doble-click a main.xml (activity_main.xml)
27
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
28/199
Desarrollo de tu primera aplicación Android
10.- El archivo main.xml define la interfaz de usuario (UI) de tu aplicación
28
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
29/199
Desarrollo de tu primera aplicación Android
11.- Modificar el archivo main.xml con el siguiente código:
12.- Guarda los cambios realizados por presionar Ctrl + S
29
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
30/199
Desarrollo de tu primera aplicación Android
13.- Click derecho sobre el nombre del proyecto en Eclipse andselecciona Run As Android Application
30
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
31/199
Desarrollo de tu primera aplicación Android
14.- Si el proyecto no tiene ningún error, la aplicación HelloWorld esinstalada y ejecutada sobre el emulador de Android.
31
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
32/199
Desarrollo de tu primera aplicación Android
15.- Click sobre el botón Home para mostrar la siguiente pantalla
32
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
33/199
Desarrollo de tu primera aplicación Android
16.- Click sobre al botón de aplicaciones para desplegar la lista deaplicaciones instaladas en el dispositivo.
33
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
34/199
Desarrollo de tu primera aplicación Android
• ¿Cuál AVD será utilizado para probar tu aplicación?
34
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
35/199
Cómo funciona
• Para crear un proyecto en Android usando Eclipse se necesitaproporcionar la siguiente información:
• En Android, una actividad (Activity) es una ventana que contiene la
interfaz de usuario de tus aplicaciones. Una aplicación puede tener
una o más actividades (MainActivity)
35
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
36/199
Cómo funciona
• En este simple ejemplo, se modificó el archivo main.xml
(activity_main.xml) para desplegar la cadena “This is my first Android
application” y un botón.
• El archivo main.xml (activity_main.xml) contiene la interfaz de usuariode la actividad, la cual es mostrada cuando MainActivity es cargada.
• Cuando “depuras” la aplicación sobre el emulador de Android, la
aplicación es instalada automáticamente sobre el emulador.
36
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
37/199
Estructura de una aplicación Android
• Varios archivos y carpetas forman un proyecto en Android en elexplorador de paquetes de Eclipse
37
src: contiene los archivos fuente .java del proyecto.
En este ejemplo, MainActivity.java es el archivo
fuente de tu actividad.
gen: contiene el archivo R.java, el cual es un
archivo generado que referencia todos los recursos
encontrados en el proyecto.
Librería Android 4.0: este elemento contiene un
archivo, android.jar, el cual contiene todas laslibrerías de clases necesitadas por una aplicación
Android.
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
38/199
Estructura de una aplicación Android
38
assets: esta carpeta contiene los recursos usados por la aplicacióntales como HTML, archivos de texto, bases de datos, entre otros.
bin: esta carpeta contiene los archivos construidos por el ADT durante
el procesos de implantación. En particular este genera el archivo .apk
(Android package). Un archivo .apk es el archivo para distribuir e
instalar una aplicación de Android.
res: esta carpeta contiene todos los recursos utilizados en tu
aplicación. Además, contiene otros sub-carpetas tales como:
drawable, layout, y values.
AndroidManifest.xml: este es el archivo manifest para tu aplicación Android. En este archivo se especifican los permisos necesitados por
tus aplicación así como también los intent-filters, receivers, entre
otros.
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
39/199
• El archivo main.xml (activity_main.xml) define la interfaz de usuario detu aplicación. Observa lo siguiente:
• En este caso el @string se refiere al archivo strings.xml localizado en
la carpeta res/values. Por lo tanto, @string/hello se refiere a la cadena
hello definida en el archivo string.xml.
Estructura de una aplicación Android
39
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
40/199
• La siguiente figura muestra otra carpeta llamada values-fr con elarchivo strings.xml conteniendo la misma cadena hello en francés.
Estructura de una aplicación Android
40
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
41/199
• El siguiente archivo importante a describir en el proyecto Android es el AndroidManifest.xml:
Estructura de una aplicación Android
41
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
42/199
• El archivo AndroidManifest.xml contiene la siguiente informaciónacerca de la aplicación:
– Define el nombre del paquete de la aplicación como net.learn2develop.HelloWorld
– La versión del código de la aplicación es 1 (establecido por el atributo
android:versioncode). Este valor es usado para identificar el numero de versión dela aplicación.
– El nombre de la versión de la aplicación es 1.0 (establecido por el atributoandroid:versionName), el cual es usado para mostrarse al usuario.
– El atributo android:minSdkVersion del elemento especifica la versión
mínima del SO sobre el cual la aplicación se ejecutará.
– La aplicación utiliza la imagen llamada ic_launcher.png localizada en las carpetasdrawable.
Estructura de una aplicación Android
42
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
43/199
– El nombre de la aplicación es el valor de la cadena app_name
– Existe una sola actividad en la aplicación especificada por el archivo
MainActivity.java.
– Dentro de la definición de esta actividad, se encuentra un elemento llamado :
• La acción para el intent-filter es llamada android.intent.action.MAIN para indicar
que esta actividad sirve como el punto de entrada para la aplicación.
• La categoría para el intent-filter es llamada android.intent.category.LAUNCHERpara indicar que la aplicación puede ser ejecutada a través del icono mostrado
en el dispositivo.
Estructura de una aplicación Android
43
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
44/199
• Conforme se agreguen más archivos y carpetas al proyecto, Eclipse
automáticamente generará el contenido del archivo R.java, el cual
actualmente contiene lo siguiente:
Estructura de una aplicación Android
44
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
45/199
• Finalmente, el código que conecta a la actividad con la interfaz de
usuario (main.xml / activity_main.xml) es el siguiente:
Estructura de una aplicación Android
45
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
46/199
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
47/199
• Para crear una actividad (Activity), se crea una clase java que herede
de la clase base Activity
Entendiendo las Activities
47
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
48/199
• Todas las actividades que se tienen en la aplicación deben ser
declaradas en el archivo AndroidManisfest.xml
Entendiendo las Activities
48
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
49/199
• La clase base Activity define una serie de eventos que gobiernan elciclo de vida de una actividad:
– onCreate(): Llamado cuando la actividad es creada.
– onStart(): Llamado cuando la actividad es visible al usuario.
– onResume(): Llamado cuando la actividad empieza a interactuar con el usuario.
– onPause(): Llamado cuando la actividad actual esta siendo pausada y la previaactividad esta siendo reanudada.
– onStop(): Llamado cuando la actividad no es visible al usuario.
– onDestroy(): Llamado antes de que la actividad sea destruida por el sistema.
– onRestart(): Llamado cuando la actividad ha sido parada y es reiniciada otra vez.
Entendiendo las Activities
49
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
50/199
• El siguiente diagrama muestra el ciclo de vida de una actividad:
Entendiendo las Activities
50
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
51/199
1.- Utilizando Eclipse, crea un nuevo proyecto llamado Activity
2.- En el archivo MainActivity.java agrega las siguientes sentencias:
Entendiendo el ciclo de vida de una actividad
51
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
52/199
3.- Presiona F-11para ejecutar la aplicación sobre el emulador de Android
(ventana LogCat)
Entendiendo el ciclo de vida de una actividad
52
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
53/199
4.- Presiona el botón de back sobre el emulador de Android:
5.- Click sobre el botón de Home y mantenlo presionado. Después click
sobre el icono de Activities y observa la ventana de LogCat:
6.- Click sobre el botón de llamadas (F3) por lo que nuestra actividad es
puesta en el background. Observa la salida en la ventana LogCat:
Entendiendo el ciclo de vida de una actividad
53
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
54/199
7.- En este caso el evento OnDestroy() no fue llamado, lo cual significa
que nuestra actividad esta aún en memoria.
8.- Click al botón de back y observa la salida en la ventana de LogCat
Entendiendo el ciclo de vida de una actividad
54
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
55/199
• Una actividad es destruida cuando se presiona el botón de back.
• El método OnPause() es llamado cuando la actividad es enviada al
background y cuando es terminada por el usuario al presionar el botón
de back.
• Cuando una actividad es iniciada, los métodos OnStart() y
OnResume() son siempre llamados.
• Cuando una actividad es por primera vez creada el método OnCreate()
es llamado.
Como funciona
55
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
56/199
• Con base en estas observaciones, se deben seguir las siguientes
directrices:
– Utiliza el método OnCreate() para crear e instanciar los objetos que se
estarán usando en la aplicación.
– Utiliza el método OnResume() para iniciar cualquier servicio o código que
necesite ejecutarse mientras tu actividad esta en primer plano.
– Utiliza el método OnPause() para detener cualquier servicio o código que
no requiera ejecutarse cuando tu actividad no esta en primer plano
– Utiliza el método OnDestroy() para liberar recursos antes de que tu
actividad sea destruida.
Como funciona
56
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
57/199
• Para aplicar una apariencia de cuadro de diálogo a una actividad
realiza lo siguiente:
Aplicar estilos y temas a una Actividad
57
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
58/199
• Esta modificación hará que tu actividad aparezca como un Dialog
Aplicar estilos y temas a una Actividad
58
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
59/199
• Ocultar el titulo de la actividad:
Aplicar estilos y temas a una Actividad
59
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
60/199
• Para desplegar una ventana de dialogo que obtenga una confirmación
del usuario, se puede sobre-escribir el método protegido
onCreateDialog() definido en la clase base Activity.
1.- Crea un nuevo proyecto Android llamado Dialog
2.- Agrega las siguientes sentencias al archivo main.xml
Desplegar una ventana de diálogo usando una Activity
60
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
61/199
3.- Agrega las siguientes sentencias en negrita al archivo
DialogActivity.java:
Desplegar una ventana de diálogo usando una Activity
61
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
62/199
Desplegar una ventana de diálogo usando una Activity
62
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
63/199
4.- Presiona F-11 para ejecutar la aplicación en el emulador de Android.
Desplegar una ventana de diálogo usando una Activity
63
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
64/199
• Click sobre el botón para desplegar la ventana de diálogo
Desplegar una ventana de diálogo usando una Activity
64
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
65/199
• Para mostrar un Diálogo, se debe implementar el método
onCreateDialog() en la clase Activity.
• Este método es llamado cuando se invoca al método showDialog()
• El método onCreateDialog() es utilizado para crear Dialogs que son
manejados por la Actividad
Como funciona
65
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
66/199
• Para crear un Diálogo, se debe utilizar el constructor Builder de la
clase AlertDialog.
Como funciona
66
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
67/199
Como funciona
67
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
68/199
1.- Utiliza el mismo proyecto creado anteriormente y agrega la siguientes
sentencias en negritas al archivo main.xml:
Desplegar un dialogo de progreso (Por favor espere)
68
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
69/199
2.- Agrega las siguientes sentencias en negrita al archivo
DialogActivity.java:
Desplegar un dialogo de progreso (Por favor espere)
69
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
70/199
Desplegar un dialogo de progreso (Por favor espere)
70
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
71/199
3.- Presiona F-11 para ejecutar la aplicación en el emulador de Android y
presiona el segundo botón para desplegar el diálogo de progreso:
Desplegar un dialogo de progreso (Por favor espere)
71
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
72/199
• Para crear un diálogo de progreso, se debe crear una instancia de la
clase ProgressDialog e invocar a su método show():
• Este código despliega el dialogo de progreso. Debido a que este es un
dialogo modal, se bloqueará la IU hasta que el dialogo de progreso
desaparezca.
• Para llevar a cabo una tarea en el background, se debe crear unThread usando un bloque Runnable
Como funciona
72
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
73/199
• El código que se coloque dentro del método run() será ejecutado en unhilo separado y en este caso se simula esto por realizar algo por cinco
segundos a través de insertar un retraso con el método sleep():
• Después de cinco segundo, se desaparece el diálogo por llamar al
método dismiss().
Como funciona
73
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
74/199
• Se puede crear también un diálogo que despliegue el progreso de una
operación tal como el estado de una descarga.
1.- Utilizando el proyecto creado en la sección anterior, agrega las
siguientes líneas en negrita al archivo main.xml:
Desplegar un dialogo de progreso más sofisticado
74
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
75/199
2.- Agrega las siguientes líneas en negrita al archivo DialogActivity.java:
Desplegar un dialogo de progreso más sofisticado
75
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
76/199
Desplegar un dialogo de progreso más sofisticado
76
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
77/199
Desplegar un dialogo de progreso más sofisticado
77
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
78/199
3.- Presiona F-11 para ejecutar la aplicación en el emulador de Android y
presiona el tercer botón para desplegar el diálogo de progreso:
Desplegar un dialogo de progreso más sofisticado
78
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
79/199
• Para crear un dialogo que muestre el progreso de una operación, se
debe primero crear una instancia de la clase ProgressDialog yconfigurar sus propiedades.
• Posteriormente, se crean los dos botones que se despliegan dentro del
dialogo de progreso.
Como funciona
79
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
80/199
• Este código produce el siguiente dialogo de progreso:
Como funciona
80
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
81/199
• Para mostrar el estado de progreso en el diálogo de progreso, se
puede utilizar un objeto de la clase Thread para ejecutar un bloqueRunnable de código:
Como funciona
81
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
82/199
• Una aplicación Android puede contener cero o más actividades.
Cuando la aplicación tiene más de una actividad, se necesita navegarde una actividad a otra.
• En Android, se navega entre actividades a través de lo que se conoce
como Intents.
1.- En Eclipse, crea una nuevo proyecto Android llamado UsingIntent
2.- Agrega una nueva clase al proyecto (Click derecho sobre el nombre
del paquete dentro de la carpeta src y selecciona New Class)
Enlazando Actividades usando Intents
82
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
83/199
3.- Nombra a la nueva clase SecondActivity y presiona Finish
Enlazando Actividades usando Intents
83
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
84/199
4.- Agrega las siguientes sentencias en negrita al archivo
AndroidManifest.xml:
Enlazando Actividades usando Intents
84
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
85/199
Enlazando Actividades usando Intents
85
5.- Crea un archivo llamado secondactivity.xml en la carpeta res/layout y
modifica el archivo con las siguientes líneas:
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
86/199
Enlazando Actividades usando Intents
86
6.- En el archivo SecondActivity.java agrega las siguientes líneas de
código:
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
87/199
Enlazando Actividades usando Intents
87
7.- Agrega las siguientes líneas en negrita al archivo main.xml
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
88/199
Enlazando Actividades usando Intents
88
7.- Modifica el archivo UsingIntentActivity.java con las siguientes líneas en
negritas:
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
89/199
Enlazando Actividades usando Intents
89
8.- Presiona F-11 para ejecutar la aplicación sobre el emulador de
Android:
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
90/199
Como funciona
90
• Una Activity esta integrada por un componente de la IU (main.xml) y
un componente java (clase UsingIntentActivity.java).
• Por lo tanto, si quieres agregar una actividad a tu aplicación se deben
agregar estos dos componentes.
• En el archivo AndroidManifest.xml se agregó lo siguiente:
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
91/199
Como funciona
91
• Cuando el boton “Display second activity” es seleccionado, se utiliza el
método startActivity():
• Las actividades en Android pueden ser invocadas por cualquieraplicación ejecutándose en el dispositivo a través de su nombre
(action) del intent-filter
• Si la actividad que se quiere invocar esta definida dentro del mismo
proyecto se puede llamar también de la siguiente forma:
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
92/199
Resolviendo colisiones entre Intent-Filters
92
• El define como una actividad puede ser invocada. ¿Que
sucede si otra actividad (en la misma o en otra aplicación) tiene elmismo nombre del filter? Por ejemplo:
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
93/199
Resolviendo colisiones entre Intent-Filters
93
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
94/199
Resolviendo colisiones entre Intent-Filters
94
• Si se llama al método startActivity() con el siguiente intent el SO
Android desplegará una ventana de selección de actividades.
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
95/199
Regresando resultados desde un Intent
95
• El método startActivity() invoca a otra actividad pero esta no regresa
un resultado a la actividad que la llamó.
• Si una actividad requiere esperar por datos que le devuelva una
segunda actividad, se debe utilizar el método startActivityForResult().
• El siguiente ejemplo ilustra esta escenario:
1.- Utilizando el mismo proyecto de la previa sección, agrega las
siguientes sentencias en negrita al archivo secondactivity.xml
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
96/199
Regresando resultados desde un Intent
96
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
97/199
Regresando resultados desde un Intent
97
2.- Agrega las siguientes sentencias en negrita al archivo
SecondActivity.java:
R d lt d d d I t t
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
98/199
Regresando resultados desde un Intent
98
R d lt d d d I t t
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
99/199
Regresando resultados desde un Intent
99
3.- Agrega las siguientes sentencias en negrita al archivo
UsingIntentActivity.java:
R d lt d d d I t t
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
100/199
Regresando resultados desde un Intent
100
R d lt d d d I t t
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
101/199
Regresando resultados desde un Intent
101
4.- Presiona F-11 para ejecutar la aplicación en el emulador de Android:
C f i
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
102/199
Como funciona
102
• Para llamar a una actividad y esperar por un resultado de regreso de
esta actividad, se necesita utilizar el método startActivityForResult():
• Además de pasar como argumento un objeto Intent, se requiere pasartambién un código de solicitud. Este código de solicitud es un valor
entero que identifica a la actividad que se esta llamando.
• El código de solicitud es necesario debido a que cuando una actividad
regresa un valor, se debe de tener una manear de identificar laactividad.
C f i
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
103/199
Como funciona
103
• Con el objetivo de que una actividad regrese un valor a la actividad que
la invoco, se utiliza un objeto Intent para enviar los datos de regreso víael método setData():
Como f nciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
104/199
Como funciona
104
• En la actividad que invoco a la segunda actividad, se necesita
implementar el método onActivityResult(), el cual es llamado si unaactividad regresa un valor:
Pasar datos usando un objeto Intent
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
105/199
Pasar datos usando un objeto Intent
105
• Además de regresar datos desde una actividad también es común
pasar datos a una actividad.
• En el ejemplo anterior se puede necesitar establecer algún texto por
default en la vista del EditText antes de que la actividad es desplegada.
• En este caso, se puede utilizar el objeto intent para pasar los datos a la
actividad.
• El siguiente ejemplo muestra como pasar datos a una actividad:
1.- En eclipse, crea un nuevo proyecto Android llamada PassingData
Pasar datos usando un objeto Intent
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
106/199
2.- Agrega las siguientes sentencias al archivo main.xml:
Pasar datos usando un objeto Intent
106
Pasar datos usando un objeto Intent
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
107/199
3.- Crea un nuevo archivo XML a la carpeta res/layout llamado
secondactivity.xml y agrega las siguientes líneas:
Pasar datos usando un objeto Intent
107
Pasar datos usando un objeto Intent
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
108/199
4.- Crea una nueva clase java llamada SecondActivity.java al paquete y
modifica el archivo como sigue:
Pasar datos usando un objeto Intent
108
Pasar datos usando un objeto Intent
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
109/199
Pasar datos usando un objeto Intent
109
Pasar datos usando un objeto Intent
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
110/199
5.- Agrega las siguientes sentencias en negrita al archivo
AndroidManifest.xml:
Pasar datos usando un objeto Intent
110
Pasar datos usando un objeto Intent
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
111/199
5.- Agrega las siguientes sentencias en negrita al archivo
PassingDataActivity.java y presiona F-11 para ejecutar el programa:
Pasar datos usando un objeto Intent
111
Pasar datos usando un objeto Intent
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
112/199
Pasar datos usando un objeto Intent
112
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
113/199
• Este ejemplo ilustra algunas maneras de pasar datos entre actividades.
• Primero, se puede utilizar el método putExtra() de un objeto Intent para
agregar un par nombre-valor.
• Además de poder utiliza el método putExtra(), se puede crear también
un objeto Bundle y entonces agregar este al objeto Intent a través del
método putExtras().
• Considera al objeto Bundle como un objeto diccionario el cual contiene
un conjunto de pares nombre-valor.
Como funciona
113
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
114/199
• Las siguientes sentencias crean un objeto Bundle y entonces agregan
dos pares de datos (nombre-valor). Posteriormente, el objeto Bundle esunido al objeto Intent.
• En la segunda actividad, para obtener los datos enviados usando el
objeto Intent, primero se obtiene el objeto Intent usando el método
getIntent().
Como funciona
114
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
115/199
• En este caso, se debe llamar al método apropiado para extraer el par
nombre-valor con base en el tipo de dato enviado.
• Para obtener el objeto Bundle, utiliza el método getExtras():
• Para obtener los pares nombre-valor, utiliza los métodos apropiados.
Para la cadena:
• Para el valor entero:
Como funciona
115
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
116/199
• Otra manera de pasar datos a una actividad es utilizando el método
setData():
• Generalmente, se utiliza el método setData() para asignar los datos
sobre los cuales un objeto Intent va a trabajar.
• Para obtener los datos establecidos por el método setData(), se utiliza
el método getData(). En este caso data es un objeto Intent:
Como funciona
116
Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
117/199
• En dispositivos con pantallas pequeñas, una actividad llena la pantalla
completamente desplegando las distintas Views que integran la IU deuna aplicación.
• Cuando una actividad es mostrada en dispositivos con pantallas más
grandes, tal como una tablet, se muestra fuera de lugar.
• Debido a que la pantalla es más grande, todas las vistas en una
actividad deben ser reordenadas para hacer un uso correcto del
espacio incrementado.
• Un enfoque más eficiente es tener “mini-actividades”, cada una
conteniendo su propio conjunto de vistas.
Fragments
117
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
118/199
Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
119/199
• La siguiente figura muestra dos fragments:
a) Lista de libros b) Descripción del libro Dispositivo en modo portrait
Fragments
119
Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
120/199
• Si la aplicación es ahora desplegada en una tableta en modo
landscape ambos fragments pueden ser empotrados en una solaactividad
Dispositivo en modo landscape
Fragments
120
Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
121/199
• Los Fragments representan una forma versátil en la cual se puedecrear la interfaz de usuario de una aplicación Android.
• En conclusión:
• Los fragments forman la unidad atómica de una interfaz de usuario
y puede ser agregados o removidos dinámicamente a las
actividades con la finalidad de crear la mejor experiencia de usuario
posible dependiendo del dispositivo.
Fragments
121
Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
122/199
1.- En Eclipse, crea un nuevo proyecto Android llamado Fragments
2.- En la carpeta res/layout, crea un nuevo archivo llamado fragment1.xml
y agrega las siguientes sentencias:
Fragments
122
Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
123/199
3.- También en la carpeta res/layout, crea otro archivo llamado
fragment2.xml y agrega las siguientes sentencias:
g
123
Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
124/199
4.- En el archivo main.xml, agrega el siguiente código:
g
124
Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
125/199
5.- Dentro del nombre del paquete net.learn2develop.Fragments, agregar
dos clases llamadas Fragment1.java y Fragment2.java
6.- Agregar las siguientes sentencias a Fragment1.java:
g
125
Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
126/199
7.- Agrega las siguientes sentencias a Fragment2.java:
g
126
Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
127/199
8.- Presiona F-11 para ejecutar la aplicación sobre el emulador de Android
g
127
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
128/199
• Un fragment se comporta como una actividad: tiene una clase java ycarga su IU desde un XML.
• El archivo XMl contiene todos los elementos usuales de IU que una
actividad puede tener tales como: TextView, EditText, Button, entre
otros.
• La clase java para un fragment necesita heredar de la clase base
Fragment:
128
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
129/199
• Para dibujar la IU de un fragment, se debe sobre-escribir el métodoonCreateView(). Este método regresa un objeto View:
• El objeto LayoutInflater rellena la IU desde el archivo XMLespecificado.
• El argumento container se refiere al ViewGroup padre, el cual es la
actividad en la que se esta intentando incrustar el fragment.
• El argumento savedInstanceState permite restaurar el fragment a suestado guardado previamente
129
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
130/199
• Para agregar un fragment a una actividad se utiliza el elemento:
• Cada fragment necesita un identificador
130
Agregando Fragments Dinámicamente
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
131/199
• En la sección anterior, se mostró como se pueden agregar fragmentsa una actividad por modificar el archivo XML en tiempo de diseño.
• En realidad, esto es mucho más útil si se crean los fragments y se
agregan a las actividades en tiempo de ejecución.
• Esto permite crear una IU personalizable para tu aplicación. Por
ejemplo: si la aplicación se esta ejecutando sobre un Smartphone, se
debería llenar la actividad con un solo fragment.
• Por otro lado, si la aplicación se esta ejecutando sobre una tablet, se
debería llenar al actividad con dos o más fragments.
131
Agregando Fragments en tiempo de ejecución
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
132/199
1.- Utilizando el mismo proyecto creado en la previa sección, modifica el
archivo main.xml por comentar los dos elementos :
132
Agregando Fragments en tiempo de ejecución
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
133/199
2.- Agrega el siguiente código en negritas al archivo
FragmentsActivity.java:
133
Agregando Fragments en tiempo de ejecución
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
134/199
134
Agregando Fragments en tiempo de ejecución
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
135/199
3.- Presiona F-11 para ejecutar la aplicación sobre el emulador Android
135
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
136/199
• Para agregar fragments a una actividad, se debe utilizar la claseFragmentManager:
• También se debe utilizar la clase FragmentTransaction para llevar acabo operaciones con los fragments:
• En el ejemplo se utilizó el WindowManager para determinar si eldispositivo esta actualmente en modo portrait o landscape.
• Se agrega el apropiado fragment a la actividad a través de crear elfragment y entonces llamar al método replace() del objetoFragmentTransaction para agregar el fragment al contenedor vistaespecificado.
136
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
137/199
• En este caso, android.R.id.content se refiere a la vista content de la
actividad
• Para asegurar que los cambios fueron realizados, se necesita llamar al
método commit():
137
Ciclo de vida de un Fragment
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
138/199
• Comprender el ciclo de vida de un Fragment te permite guardar
apropiadamente una instancia de un fragment cuando es destruido yrestaurarlo a su estado previo cuando es re-creado.
• El siguiente ejemplo examina los distintos estados experimentados por
un Fragment
1.- Utilizando el mismo proyecto creado en la sección anterior, agrega el
siguiente código en negrita al archivo Fragment1.java:
138
Ciclo de vida de un Fragment
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
139/199
139
Ciclo de vida de un Fragment
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
140/199
140
Ciclo de vida de un Fragment
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
141/199
141
Ciclo de vida de un Fragment
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
142/199
2.- Cambia el emulador de Android al modo landscape por presionar F-11
3.- Presiona F-11 en Eclipse para ejecutar la aplicación en el emulador
4.- Cuando la aplicación este cargada en el emulador, lo siguiente es
desplegado en el ventana LogCat (Windows➪ Show View➪ LogCat):
5.- Click sobre el boton Home del emulador. Lo siguiente será desplegadoen la ventana LogCat:
142
Ciclo de vida de un Fragment
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
143/199
6.- En el emulador, click al botón home y mantenlo presionado, Click sobre
tu aplicación y lo siguiente será mostrado:
7.- finalmente, click sobre el botón back del emulador, ahora debe de
mostrar los siguiente:
143
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
144/199
• Cuando un fragment esta siendo creado, el fragment pasa por lossiguientes estados:
– onAttach()
– onCreate()
– onCreateView()
– onActivityCreated()
• Un fragment pasa a través de los siguientes estados cuando llega aestar visible:
– onStart()
– onResume()
• Los siguientes estados son a travesados por un fragment cuando va almodo background:
– onPause()
– onStop()
144
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
145/199
• Cuando un fragment es destruido, este va a través de los siguientes
estados: – onPause()
– onStop()
– onDestroyView()
– onDestroy()
– onDetach()
• Al igual que las actividades, se puede restaurar una instancia de un
fragment usando un objeto Bundle en los siguientes estados:
– onCreate()
– onCreateView()
– onActivityCreated()
145
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
146/199
• La mayoría de los estados experimentados por un fragment sonsimilares a los de una actividad; sin embargo, los siguientes sonespecíficos de los fragments:
– onAttached(): Llamado cuando el fragment ha sido asociado con laactividad.
– onCreateView(): Llamado para crear la vista para el fragment
– onActivityCreated(): Llamado cuando el método OnCreate() de la actividadha sido regresado.
– onDestroyView(): Llamado cuando la vista del fragment esta siendoremovida.
– onDetach(): Llamado cuando el fragment es separado de la actividad
146
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
147/199
• Una de las principales diferencias entre actividades y fragments es que
cuando una actividad va al background, la actividad es colocada en lapila de regreso.
• Esto permite que la actividad sea reanudada cuando el usuario
presiona el botón de regreso.
• Los fragments, sin embargo, no son colocados automáticamente en la
pila de regreso cuando se van al background.
• Para colocar un fragment adentro de la pila, se necesita explícitamente
llamar al método addToBackStack() durante una transacción
147
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
148/199
• Por ejemplo:
148
Interacciones entre Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
149/199
• Una Actividad puede contener uno o más fragments trabajando juntos
para presentar una IU coherente. En este caso, los fragments puedenrequerir comunicarse e intercambiar datos.
• El siguiente ejemplo muestra como un fragment puede acceder a las
vistas contenidas adentro de otro fragment.
1.- Utilizando el proyecto anterior, agrega las siguientes sentencias en negrita al
archivo fragment1.xml:
149
Interacciones entre Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
150/199
2.- Agrega las siguientes sentencias en negrita al archivo fragment2.xml:
150
Interacciones entre Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
151/199
3.- Agrega las siguientes líneas al archivo main.xml
151
Interacciones entre Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
152/199
4.- Modifica el archivo FragmentsActivity.java por comentar el código que se
agregó en la sección anterior:
152
Interacciones entre Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
153/199
153
Interacciones entre Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
154/199
5.- Agrega las siguientes sentencias al archivo Fragment2.java:
154
Interacciones entre Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
155/199
155
Interacciones entre Fragments
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
156/199
6.- Presiona F-11 para ejecutar la aplicación sobre el emulador Android. En el
segundo fragment sobre la derecha, click en el botón:
156
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
157/199
• Debido a que los fragments están incrustados en las actividades, se
puede obtener la actividad en la cual un fragment esta empotradoactualmente por:
• Primero utilizar el método getActivity() y posteriormente
• Utilizar el método findViewById() para localizar la vista contenida en el
fragment
• Alternativamente, se puede agregar también el siguiente método al
archivo FragmentsActivity.java:
157
Invocar aplicaciones integradas usando Intents
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
158/199
• Uno de los aspectos claves de Android es utilizar los intents para
invocar actividades de otras aplicaciones.
• Nuestra aplicación puede llamar a las aplicaciones que están incluidas
en el dispositivo Android.
• Por ejemplo, si tu aplicación necesita cargar una página web, se puedeutilizar el objeto Intent para invocar el navegador integrado en el
dispositivo para cargar la página web, en lugar de construir tu propia
versión de navegador para este propósito.
• El siguiente ejemplo muestra como llamar a algunas aplicacionesintegradas comúnmente en el dispositivo Android
158
Invocar aplicaciones integradas usando Intents
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
159/199
1.- En eclipse crea un nuevo proyecto Android y nómbralo Intents
2.- Agrega las siguientes sentencias al archivo main.xml
159
Invocar aplicaciones integradas usando Intents
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
160/199
3.- Agrega las siguientes sentencias en negrita al archivo
IntentsActivity.java:
160
Invocar aplicaciones integradas usando Intents
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
161/199
161
4 P i F 11 j t l li ió b l l d d A d id
Invocar aplicaciones integradas usando Intents
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
162/199
4.- Presiona F-11 para ejecutar la aplicación sobre el emulador de Android.
Click sobre los botones web browser, make calls y show map para cargar
la aplicaciones sobre el emulador:
162
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
163/199
• En este ejemplo, se mostró como utilizar la clase Intent para llamar aalgunas aplicaciones integradas por default en el SO Android tales
como mapas, teléfono, contactos y navegador web.
• En Android los Intent vienen en pares: action y data. El action describe
lo que se va a llevar a cabo tal como editar un elemento, visualizar elcontenido de un elemento, entre otros.
• Los data especifican lo que es afectado tal como los datos de una
persona en la base de datos de contactos.
• Los data son especificados como un objeto Uri
163
Algunos ejemplos de action son:
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
164/199
• Algunos ejemplos de action son:
– ACTION_VIEW
– ACTION_DIAL
– ACTION_PICK
• Algunos ejemplos de data incluyen los siguientes:
– www.google.com
– tel:+651234567
– geo:37.827500,-122.481670
– content://contacts
164
El ti d t d ib l ió li d
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
165/199
• El par action y data describe la operación a ser realizada:
– Para marcar un número telefónico se debería utilizar el par
ACTION_DIAL/tel:+651234567
– Para desplegar una lista de contactos almacenada en el teléfono, se utiliza
el par ACTION_VIEW/content://contacts
– Para seleccionar un contacto de la lista de contactos, se utiliza el par
ACTION_PICK/content://contacts
• En el primer botón, se crea un objeto Intent y entonces se pasan dos
argumentos a su constructor, el action y data:
165
El ódi t i d ibi d l i i t f
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
166/199
• El código anterior se puede re-escribir de la siguiente forma:
• En el segundo botón, se marca un número específico por pasar como
argumento en el data el número telefónico:
• Si requiere llamar al número sin intervención del usuario se debe
cambiar el action como sigue:
166
Para desplegar el marcador de números sin especificar algún número
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
167/199
• Para desplegar el marcador de números sin especificar algún número
simplemente omite la porción de data:
• El tercer botón despliega un mapa usando la constante ACTION_VIEW:
167
Análisis del uso del objeto Intent
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
168/199
• Primero, se aprendió que se puede llamar a otra actividad por pasar suaction al constructor de un objeto Intent:
• El action, en este ejemplo “net.learn2develop.SecondActivity”, es
también conocido como el nombre del componente. Este es utilizadopara identificar la aplicación/actividad target que quieres invocar.
• Se puede también re-escribir el código anterior por especificar el
nombre de la actividad si este reside en el mismo proyecto:
168
Análisis del uso del objeto Intent
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
169/199
• Se puede crear un objeto Intent por pasar un action y data:
• También se puede pasar los datos a través del método setData():
• El SO Android buscará todas las actividades que son capaces de
satisfacer tu solitud. Este proceso es conocido como resolución deintents
169
• Para algunos intents no hay necesidad de especificar los data Por
Análisis del uso del objeto Intent
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
170/199
• Para algunos intents, no hay necesidad de especificar los data. Porejemplo para seleccionar un contacto de la aplicación de contactos, se
puede especificar el action y entonces indicar el tipo MIME utilizando elsetType():
• El método setType() explícitamente especifica el tipo de datos MIMEpara indicar el tipo de datos a regresar.
• Además de especificar el action, data y el type, un objeto intent puedeespecificar también una categoría.
• Una categoría agrupa actividades en unidades lógicas, lo cual se utilizapara realizar filtrado
170
• Con la finalidad de que otras actividades invoquen una actividad se
Uso de los intent filters
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
171/199
• Con la finalidad de que otras actividades invoquen una actividad, se
necesitan especificar el action y category adentro del elemento en el archivo AndroidManifest.xml:
• Especificar intent filters a detalle:
1.- Utilizando el proyecto Intents creado anteriormente, agrega una nueva
clase al proyecto y nómbrala MyBrowserActivity.java.
Además, agrega un nuevo archivo XML llamado browser.xml a la carpeta
res/layout
171
2 Agrega las siguientes sentencias al archivo AndroidManifest xml:
Uso de los intent filters
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
172/199
2.- Agrega las siguientes sentencias al archivo AndroidManifest.xml:
172
Uso de los intent filters
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
173/199
173
3 - Agrega las siguientes sentencias al archivo main xml:
Uso de los intent filters
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
174/199
3.- Agrega las siguientes sentencias al archivo main.xml:
174
Uso de los intent filters
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
175/199
175
4 - Agrega las siguientes sentencias en negrita al archivo
Uso de los intent filters
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
176/199
4.- Agrega las siguientes sentencias en negrita al archivo
IntentsActivity.java:
176
5 - Agrega las siguientes sentencias en negrita al archivo browser xml:
Uso de los intent filters
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
177/199
5. Agrega las siguientes sentencias en negrita al archivo browser.xml:
6.- Agrega las siguientes sentencias en negrita al archivo
MyBrowserActivity.java:
177
Uso de los intent filters
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
178/199
178
7 - Presiona F-11 para ejecutar la aplicación en el emulador de Android y
Uso de los intent filters
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
179/199
7. Presiona F 11 para ejecutar la aplicación en el emulador de Android y
click sobre el botón Launch my Browser
179
• En este ejemplo, primero se creo una actividad llamada
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
180/199
En este ejemplo, primero se creo una actividad llamada
MyBrowserActivity y se declaró en el archivo AndroidManifest.xml
• En este caso, se declaran dos action, una category y un data.
180
• Si ahora se usa el action ACTION VIEW:
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
181/199
Si ahora se usa el action ACTION_VIEW:
• Android desplegará la siguiente selección:
181
• Se hace notar que cuando múltiples actividades pueden atender el
Como funciona
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
182/199
Se hace notar que cuando múltiples actividades pueden atender el
objeto intent, la ventana de diálogo “Complete action using” aparece.
• Se puede personalizar esta ventana a través de utilizar el método
createChooser() de la clase intent:
• Esto produce el siguiente cambio en la ventana de dialogo:
182
• Se pueden agrupar actividades en categorías por utilizar el elemento
Agregar Categorías
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
183/199
p g p g p
en el intent filter. Supón que se agrega el siguiente
elemento al archivo AndroidManifest.xml:
183
Agregar Categorías
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
184/199
184
Agregar Categorías
• El siguiente código invocará la actvidad MyBrowerActivity:
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
185/199
185
g g y y
• Se agrega la categoría al objeto Intent usando el método
addcategory(). Si se omite la sentencia addcategory() el código aún
invocará a la actividad MyBrowerActivity.
• Si se especifica una categoría que no hace un match con la categoría
definida en el intent-filter el código no funcionará:
Agregar Categorías
• Al agregar la siguiente categoría en el intent filter de MyBrowerActivity,
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
186/199
186
g g g g y y,
el código anterior trabajará sin problemas:
• Se pueden agregar múltiples categorías a un objeto Intent; por ejemplo
las siguientes sentencias agregan la categoría
net.learn2develop.SomeOtherApps al objeto Intent:
Agregar Categorías
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
187/199
187
• Este código no será capaz de invocar a la actividad MyBrowerActivity:
• Se hace notar que cuando se utiliza un objeto Intent con categorías,
todas las categorías agregadas al objeto Intent deben estar definidas
en el inter-filter antes de que un actividad puedas ser invocada.
Desplegar notificaciones
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
188/199
188
• En los ejemplos anteriores se ha estado utilizando la clase Toast. Esta
clase es una manera práctica de mostrar alertas a los usuarios; sin
embargo, no es persistente.
• Para mensajes que son importantes, se debería utilizar un método
persistente.
• En este caso, se debe utilizar el NotificationManager para desplegar un
mensaje persistente sobre la parte superior del dispositivo,
comúnmente conocida como barra de estado (status bar) o también
llamada barra de notificación
Desplegar notificaciones
1.- En Eclipse, crea un proyecto Android llamado Notifications
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
189/199
189
2.- Agrega una nueva clase llamada NotificationView al paquete. Además,
agrega un nuevo archivo notification.xml a la carpeta res/layout
3.- Agrega las siguientes sentencias de código al archivo notification.xml:
Desplegar notificaciones
4.- Modifica el archivo NotificationView.java como sigue:
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
190/199
190
Desplegar notificaciones
5.- Agrega las siguientes sentencias en negritas al archivo
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
191/199
191
AndroidManifest.xml:
Desplegar notificaciones
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
192/199
192
6.- Agrega las siguientes sentencias al archivo main.xml:
Desplegar notificaciones
7.- Finalmente, agrega las siguientes sentencias al archivo
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
193/199
193
NotificationsActivity.java:
Desplegar notificaciones
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
194/199
194
Desplegar notificaciones
8.- Presiona F-11 para ejecutar la aplicación sobre el emulador de Android.
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
195/199
195
Click sobre el botón Display Notification y un texto de notificación
aparecerá en la barra de estado:
9.- Arrastrando la barra de estado hacia abajo mostrará los detalles de la
notificación
Como funciona
• Para desplegar una notificación, primero se creo un objeto Intent queapunta a la actividad NotificationView:
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
196/199
196
apunta a la actividad NotificationView:
• Posteriormente se crea también un objeto PendingIntent:
• El método getActivity() regresa un objeto PendingIntent y recibe lossiguientes argumentos:• context: contexto de aplicación
• request code: código de solicitud para el intent• intent: el intent para enlazar a la actividad target
• flags: los modos en los cuales la actividad será enlanzada
Como funciona
• Se obtiene una instancia de la clase NotificationManager y se crea una
i i d l l N ifi i
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
197/199
197
instancia de la clase Notification:
• La clase Notification permite especificar la información principal de la
notificación cuando esta aparece por primera vez en la barra de estado.
Como funciona
• Posteriormente, se definen los detalles de la notificación usando el
ét d tL t tE tI f ()
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
198/199
198
método setLatestEventInfo():
• Finalmente para desplegar la notificación se utiliza el método notify():
• Cuando el usuario selecciona la notificación, la actividad
NotificationView es invocada.
Como funciona
• Posteriormente, se desaparece la notificación a través de utilizar el
ét d l() d l bj t N tifi ti M d l ID d l
8/18/2019 Introduccion a Android y Activities, Fragments e Intents
199/199
método cancel() del objeto NotificationManager y pasando el ID de la
notificación: