Manual del curso Desarrollo de Aplicaciones Móviles I PDF

Document Details

PreferableFactorial8607

Uploaded by PreferableFactorial8607

Cibertec

Solis Vidal, Sotelo Santiago

Tags

mobile application development android development kotlin programming mobile programming

Summary

This course manual details the curriculum for Mobile Application Development I. It covers topics such as Android platform, Kotlin programming language, Android Studio, and mobile application development. The manual is structured around learning units, each with learning objectives, topics, content, exercises, and activities. The course is primarily practical, focusing on creating mobile applications using Android development tools.

Full Transcript

Desarrollo de Aplicaciones Móviles I DESARROLLO DE APLICACIONES MÓVILES I 2 Curso Desarrollo de Aplicaciones Móviles I (1896) Formato Manual de curso...

Desarrollo de Aplicaciones Móviles I DESARROLLO DE APLICACIONES MÓVILES I 2 Curso Desarrollo de Aplicaciones Móviles I (1896) Formato Manual de curso Autor Institucional Cibertec Páginas 117 p. Elaborador Solis Vidal, Sotelo Santiago Revisor de Contenidos Liñan Rodriguez, Julio Cesar ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 3 Índice Presentación 6 Red de contenidos 7 UNIDAD DE APRENDIZAJE 1: INTRODUCCIÓN A LA PLATAFORMA 1.1 Tema 1 : Plataforma Android 10 1.1.1 : Plataforma Android 10 1.1.2 : Open Handset Alliance 14 1.1.3 : Versiones de Android 14 1.1.4 : Arquitectura de Android 16 1.1.5 : Características de Android 17 1.1.6 : SDK Android y Android Runtime 18 1.1.7 : Android Runtime 22 1.1.8 Introducción al lenguaje Kotlin 24 1.1.9 Android Studio 25 1.2 Tema 2 : Estructura de proyectos y Material Design 27 1.2.1 : Ide de Android Studio 27 1.2.2 : Estructura de proyectos Android, vistas 28 1.2.3 : Recursos de una aplicación 29 1.2.4 : Configuración de una aplicación Graddle 30 1.2.5 : Que es un Activity, ciclo de vida de un activity 30 1.2.6 : Moverse entre actividades 35 1.2.7 : Vistas en Android 38 1.2.8 : Layout y Tipos de Layout 39 1.2.9 : Material Design y widgets 41 1.2.10 : Controles FloatingActionButton y TextInputLayout 41 UNIDAD DE APRENDIZAJE 2: COMPONENTES Y LENGUAJE KOTLIN 2.1 Tema 3 : Lenguaje de programación Kotlin y Material Design 48 2.1.1 : Tipos de datos, arreglos, Variables (var, val) 49 2.1.2 : funciones, métodos 49 2.1.3 : Clases, Métodos, Objetos 50 2.1.4 : Loops, for, while, if/if-else 51 2.1.5 : Eventos, Programación de eventos 52 2.1.6 : Listas y Adaptadores, RecyclerView, BaseAdapter, ArrayAdapter 53 2.2 Tema 4 : Diálogos, notificaciones 64 2.2.1 : Dialog Window y Progress Dialog 64 2.2.2 : Dialogos personalizados basados en clases 68 2.3 Tema 5 : Diseño avanzado controles enlazados a datos 68 IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 4 2.3.1 : Diseño de interfaz de usuario con Views Avanzados: RecycledView 68 2.3.2 : Clase RecyclerView.Adapter, ViewHolder 68 2.3.3 : GridView Diseño avanzado 71 2.3.4 : Introducción Fragments 71 2.3.5 : Declarando Fragments , fragments dinámicos 71 2.3.6 : Visualizando Fragments básicos 72 UNIDAD DE APRENDIZAJE 3: PERSISTENCIA DE DATOS Y PROCESOS DE SEGUNDO PLANO 3.1 Tema 6 : Persistencia de datos 77 3.1.1 : Acceso a recursos y archivos 77 3.1.2 : Persistencia de datos: Files, almacenamiento y tipos 77 3.1.3 : SQLite, características, tipos de datos, clases métodos y funciones 78 3.1.4 : Gestión base de datos SQLite. Uso de componente SQLiteOpenHelper 82 3.1.5 : Modelo MVC 82 3.2 Tema 7 : Hilos y ejecución en segundo plano 84 3.2.1 : Tareas Asíncronas y mejoras en el desempeño de apps 84 3.2.2 : Thread, AsyncTask, runOnUiThread 85 3.2.3 : Procesos de fondo y acceso a interfaz de usuario 85 3.2.4 : JobScheduler crear tareas de fondo 86 3.3 Tema 8 : Sensores 87 3.3.1 : Empleando el acelerómetro, sensores de luz, sensor de proximidad 87 UNIDAD DE APRENDIZAJE 4: NETWORKING Y SERVICIOS EN LA NUBE 4.1 Tema 9 : Networking y consumo de Servicios Rest 91 4.1.1 : HttpClient: Redes, Aplicaciones y Servicios en Internet (RASI) 91 4.1.2 : Que es JSON 91 4.1.3 : Objetos y arreglos JSON 92 4.1.4 : Uso Retrofit: llamadas y respuesta de retrofit 93 4.1.5 : Uso Volley: objetos Volley llamadas y respuestas 96 4.2 Tema 10 : Control de acceso a servicios en la nube 98 4.2.1 : Accediendo a servicios de Facebook 98 4.2.2 : Firebase, que es firebase 99 4.2.3 : Conceptos de firebase 100 4.2.4 : Configuración de firebase 100 4.2.5 : Servicios: Declarando, registrando, iniciando y deteniendo un servicio. 100 4.3 Tema 11 : Multimedia 102 4.3.1 : Recursos multimedia 102 4.3.2 : Sonido y video 102 4.3.3 : Reproducir archivos de la memoria SD. 103 ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 5 UNIDAD DE APRENDIZAJE 5: SERVICIOS BASADOS EN LOCALIZACIÓN Y GENERACIÓN DE APK 5.1 Tema 12 : Servicios basados en localización 106 5.1.1 : Servicios basados en localización GPS 106 5.1.2 : Utilizando Google Maps 107 5.1.3 : Permisos de ubicación 108 5.1.4 : Uso de Google Maps API 108 5.1.5 : Consola de Google Developer 109 5.2 Tema 13 : Generación de instaladores 110 5.2.1 : Firma y generación de claves 110 5.2.2 : Generar APK 111 Bibliografía 117 IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 6 Presentación El Taller de Desarrollo de Aplicaciones Móviles I es un curso que pertenece a la línea de programación y desarrollo de aplicaciones siendo un curso de especialidad sólo en la carrera de Computación e Informática. Permite al alumno iniciarse en la programación de dispositivos móviles bajo el entorno Android studio que ha sido optimizado para dispositivos móviles con sistema operativo Android. El manual para el curso ha sido diseñado bajo la modalidad de unidades de aprendizaje, las que se desarrollan durante semanas determinadas. En cada una de ellas, hallará los logros, que debe alcanzar al final de la unidad; el tema tratado, el cual será ampliamente desarrollado; y los contenidos, que debe desarrollar, y ejercicios necesarios para poner en práctica los conceptos desarrollados en clase. Por último, encontrará las actividades que deberá desarrollar en cada sesión, que le permitirán reforzar lo aprendido en la clase. El curso es práctico y consiste en un taller de programación. En la primera parte del curso, se revisan las características del sistema operativo Android, lenguaje de programación Kotlin y Java que son los lenguajes predeterminados para Android, principalmente se da énfasis en el uso, así como utilizar las funcionalidades básicas de los celulares con el fin de familiarizar al participante con la forma de trabajo y la arquitectura de aplicaciones bajo el sistema operativo Android y la relación que existe con las aplicaciones y/o servicios de google (Google Apps). Luego, se desarrollan aplicaciones que permitan el manejo del dispositivo móvil para ingresar, procesar y presentar información haciendo uso de las clases que proporciona la plataforma de desarrollo Android, luego se desarrollara persistencia de datos locales como almacenamiento en disco, bases de datos sqlite y en la nube vía web services, soap, rest. Se concluye con la publicación de aplicaciones haciendo uso de los servicios de Google vía Google Play. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 7 Red de contenidos Desarrollo de Aplicaciones Móviles I Unidad 1 Unidad 2 Unidad 3 Unidad 4 Unidad 5 Persistencia de datos Servicios basados en Introducción a la Componentes, Networking y en Android procesos localización y plataforma lenguajes Kotlin Servicios en la nube de segundo plano Generación de APK IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 8 UNIDAD 1 INTRODUCCIÓN A LA PLATAFORMA LOGRO DE LA UNIDAD DE APRENDIZAJE Al término de la unidad, el alumno elabora aplicaciones haciendo uso del entorno de desarrollo Android Studio. TEMARIO 1.1 Tema 1 : Plataforma Android 1.1.1 : Plataforma Android 1.1.2 : Open Handset Alliance 1.1.3 : Versiones de Android 1.1.4 : Arquitectura de Android 1.1.5 : Características de Android 1.1.6 : SDK Android y Android Runtime 1.1.7 : Android Runtime 1.1.8 Introducción al lenguaje Kotlin 1.1.9 Android Studio 1.2 Tema 2 : Estructura de proyectos y Material Design 1.2.1 : Ide de Android Studio 1.2.2 : Estructura de proyectos Android, vistas 1.2.3 : Recursos de una aplicación 1.2.4 : Configuración de una aplicación Graddle 1.2.5 : Que es un Activity, ciclo de vida de un activity 1.2.6 : Moverse entre actividades 1.2.7 : Vistas en Android 1.2.8 : Layout y Tipos de Layout 1.2.9 : Material Design y widgets 1.2.10 : Controles FloatingActionButton y TextInputLayout ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 9 ACTIVIDADES PROPUESTAS  Identifica las diferentes partes del Android Studio  Aprende a crear aplicaciones con los controles básicos Button, EditText, TextView y el lenguaje Java y Kotlin  Crea y configura emuladores  Utiliza controles de material design  Identifica las secciones de un proyecto y su configuración  Aprende a configurar componentes y el funcionamiento a gladdle  Crea y desarrolla aplicaciones utilizando activitys  Crea y desarrolla aplicaciones utilizando controles de ingreso de datos  Programa eventos de los botones de comando y botones flotantes IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 10 1.1. INTRODUCCIÓN A LA PLATAFORMA 1.1.1. Plataforma Android Android es un sistema operativo móvil basado en el Kernel 2.6 de Linux Android fue desarrollado para dispositivos móviles, tabletas, relojes, televisores automóviles, actualmente es uno de los sistemas operativos más utilizados en el planeta. Inicialmente fue desarrollado por Andy Rubin figura 1, quien funda la compañía Android Inc. en estados unidos en Palo alto, posterior a ello Google adquiere completamente la compañía en el año 2005 posterior a ello se crea en grupo de empresas asociadas que patrocina Android como plataforma libre para dispositivos móviles y otros. La decisión de estudiar desarrollo de aplicaciones móviles es que tiene la mayor cantidad de dispositivos del mercado ya que no solo está orientado a dispositivos móviles sino a una aplica gama de dispositivos con el soporte de Google a continuación se presenta una imagen de los dispositivos que soportan Android figura 2 Figura 1: Andy Rubin Fuente. - Tomado de http://es.wikipedia.org/wiki/Andy_Rubin Figura 2: Dispositivos que soportan Android Fuente. - Tomado de http://www.android.com/ ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 11 Android está basado en capas que permiten administrar las funciones básicas de cualquier equipo móvil, en primer lugar, tiene aplicaciones estándares como administrador de contactos, administrador de aplicaciones administrador de drivers, administrador de mensajes, administrador de archivos, álbum de fotos, administrador de llamadas configuración todo controlado tu cuenta de Gmail para cualquier instalación de aplicación se debe realizar por medio de Google Play. Debajo de ello se encuentra las librerías nativas para acceso a bases de datos, administración de recursos, drivers de audio, administrador de sistema, webkit navegador web nativo, etc. Por el lado de la máquina virtual se encuentra Virtual Dalvik y Art que es una de las mejoras que fueron creados en octubre del año 2014, después de ello se tiene el Kernel del sistema operativo tal como se puede apreciar en el grafico que se presenta a continuación. Figura 3: Arquitectura de Android y sus componentes Fuente. - Tomado de https://source.android.com/devices/architecture?hl=es IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 12 ¿Qué es una Aplicación Android? Una aplicación desarrollada en Android es un programa que posee una o varias funciones específicas que lo hacen útil para un motivo. Son equivalentes a cualquier programa echo para PC con la diferencia que tiene funcionalidades desarrollados para el celular uno de los limitantes es el tamaño de pantalla y teclado, aunque las últimas versiones de sistemas operativos tienen soporte a conectar teclado USB. Por otro lado, cualquier aplicación se debe instalar por medio de Google Play, sin embargo, se puede instalar una aplicación configurando instalar aplicaciones de fuentes no seguras por otro lado la plataforma Android tiene una gran cantidad de aplicaciones con más de 2,610,940 mil aplicaciones que se pueden descargar muchos de ellos gratuitos Figura 4: Programas posibles para instalar en el celular Fuente. - Tomado de http://www.androidexperto.com Entre las aplicaciones más importantes que tiene actualmente Android disponible para los celulares y tables son:  Gestor de archivos, Lector de PDF  Navegadores  Clientes de correo  Editores de documentos open office o Microsoft office  Reproductor de música como Spotify  Navegadores GPS Figura 5: Programas posibles en Google play Fuente. - Tomado de https://play.google.com/store ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 13 A continuación, vamos a conocer aquellas empresas que se unieron para sacar adelante el proyecto de Android y lograr el crecimiento sostenido. Google Play Google Play es una plataforma de distribución digital de aplicaciones móviles para los dispositivos con sistema operativo Android, así como una tienda en línea desarrollada y operada por Google. Esta plataforma permite a los usuarios navegar y descargar aplicaciones, juegos, música, libros, revistas y películas.1 Figura 6: Google play Fuente. - Tomado de https://play.google.com/store Google Play Services Google Play Services es un API disponible para que los desarrolladores de aplicaciones móviles puedan añadir funciones de sincronización de las últimas versiones de las aplicaciones publicadas en Google Play mediante la autenticación a los servicios de Google, por ello es muy importante tener una cuenta de correo de Gmail Google Play Services viene preinstalados en todos los móviles Android lanzados con Play Store. Figura 7: Google Play Fuente. - Tomado de https://i.blogs.es/b397ad/play-services-diagram/ 1 https://es.wikipedia.org/wiki/Google_Play IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 14 1.1.2. Open Handset Alliance Es una alianza de empresas de manera comercial para patrocinar el desarrollo de Android hay 84 compañías que patrocinan el producto en beneficio de continuar mejorando la plataforma Android. Algunos de sus miembros son Google, HTC, Dell, Intel, Motorola, Qualcomm, Texas Instruments, Samsung, LG, T-Mobile, Nvidia y Wind River Systems. Figura 8: Lista de empresa open HanSet Alliance Fuente. - Tomado de https://source.android.com/devices/architecture?hl=es A continuación, vamos a revisar las versiones de Android con el fin de meternos un poco en la historia y su evolución del sistema operativo. 1.1.3. Versiones de Android Android como tal han tenido un crecimiento a gran escala desde sus inicios a partir de su lanzamiento al mercado 2008 ha crecido sostenidamente gracias a las empresas de la alianza formada y al equipo de desarrollo de Android por ello cada versión tiene funcionalidades de acuerdo con el hardware del mercado y la tecnología existente por ello tenemos muchas versiones de API disponibles. Por ejemplo, la primera versión lanzada de Android HTC lanzado al mercado en el año 2008 Figura 9: HTC Dream of T-Mobile G1 Fuente. - Tomado de https://es.wikipedia.org/wiki/Android ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 15 Un ejemplo de ello es el primer equipo de hardware solo tenía una funcionalidad de touch, pero no tenía funciones táctiles para utilizarlo como hacer zoom o mover objetos mediante los dedos ello por las limitaciones de hardware además muchos de los primeros equipos tenían un desempeño básico, sin embargo, para la época cuyo dueño y señor del mercado eran los iPhone Android era uno de los mejores equipos a bajo costo y con ello capto la atención del mercado A continuación, se presenta la siguiente tabla de versiones de. Figura 10: Lista de empresa open HanSet Alliance Fuente. - Tomado de https://source.android.com/devices/architecture?hl=es Que son las API de Android Un api tiene un conjunto de librerías que forman parte de la funcionalidad y tiene un soporte a las funcionalidades existentes a su fecha de lanzamientos con el tiempo ello se va mejorando, agregando o quitando librerías en cada versión haciendo que las versiones antiguas muchas veces sean descontinuadas o se muestre el mensaje de warning. La documentación oficinal también muestra algo similar como se indica en la siguiente imagen Figura 11: Lista de empresa open HanSet Alliance Fuente. - Tomado de https://source.android.com/devices/architecture?hl=es IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 16 Actualmente se tiene las siguientes API que se pueden descargar utilizando desde Android Studio Figura 12: API instalado en Android studio Fuente. -propia 1.1.4. Arquitectura de Android Una aplicación desarrollada en Android es un programa que posee una o varias funciones específicas que lo hacen útil para un motivo, son equivalentes a cualquier programa de computadora sin embargo con los equipos celulares actuales tenemos procesadores de 64 bits, así como memoria desde 2gb hasta 8gb de memoria RAM y en caso de memoria interna SD vienen desde 8gb hasta 256gb y algunas tables pueden tener hasta 1TB. El sistema operativo Android, al igual que los propios teléfonos móviles, ha evolucionado rápidamente, acumulando una gran cantidad de versiones, desde la 1.0 para el QWERTY HTC G1, hasta la 10.0 que acaba de salir al mercado. Entre las principales características tenemos:  Framework de aplicación que habilita la reutilización y reemplazo de componentes  máquina virtual Dalvik optimizada para móviles  navegador integrado basado en webkit  gráficos optimizados por una librería gráfica 2d propia; gráficos 3d basados en la especificación OpenGL es 1.0  Sqlite para almacenamiento de datos estructurados  soporte para gran variedad de archivos multimedia (mpeg4, h.264, mp3, aac, amr, jpg, png, gif)  Telefonía GSM, Bluetooth, 3g y WIFI, Cámara, GPS, compás.  Entorno de desarrollo completo Android Studio incluyendo emulador, y acceso a file Explorer, así como simulación de funciones de SMS, GPS, sensores. rendimiento y plugin para el IDE eclipse ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 17 Ejemplo de un celular utilizando la cámara en alta resolución Figura 13: Celular alta resolución Fuente. -Tomado de: https://i.blogs.es/b397ad/play-services-diagram/ 1.1.5. Características de Android Las características más resaltantes de Android tenemos las siguientes  Acceso a Hardware, incluyendo cámara, GPS y sensores  Transferencia de datos con Wifi, BlueTooth y NFC  Mapas y Geolocalización  Servicios en segundo plano (Background Services)  Base de datos SQLite para almacenamiento y recuperación de datos.  Soporte a gráficos 2D y 3D  Optimización de memoria y administración de procesos.  Sistema de construcción de código basado en JetBrains flexible.  Construir variantes y generación de archivos apk múltiple  Plantillas de código para ayudarle a construir características de la aplicación comunes  editor de diseño Rich con soporte para arrastrar y soltar de edición tema  Herramientas de pelusa para atrapar el rendimiento, facilidad de uso, compatibilidad de versiones, y otros problemas  Capacidades ProGuard y aplicación de firma  El soporte integrado para la plataforma de nube Google, por lo que es fácil de integrar Google Cloud Mensajería y App Engine  Soporte para construcción basada en Gradle.  Consola de desarrollador: consejos de optimización, ayuda para la traducción, estadísticas de uso.  Renderización en tiempo real  Soporte para programar aplicaciones para Android Wear  Herramientas Lint para detectar problemas de rendimiento, usabilidad, compatibilidad de versiones, y otros problemas.  Refactorización especifica de Android y arreglos rápidos.  Plantillas para crear diseños comunes de Android y otros componentes. En entorno de desarrollo está preparado para crear cualquier tipo de aplicación en Android entre ellos podemos tener para televisor, teléfonos, reloj, google glass y/o Google Cloud. IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 18 1.1.6. -SDK Android y Android Runtime Para utilizar android se debe instalar el IDE de android studio, y para ello se requiere instalar el SDK de Android y que es el SDK (Software Development kit), es el conjunto de herramientas librerías y componentes para desarrollar en Android por ejemplo entre los componentes más importantes de Android son los siguientes:  Ide de Android Studio  APIs de Android  Editor de código fuente  Depurador de código fuente  Emulador de dispositivo móvil  Soporte para diferentes lenguajes de programación como Kotlin, Java Por ejemplo, podemos revisar los componentes instalados del SDK ingresando a la siguiente opción de Android studio Figura 14: Celular alta resolución Fuente. -Tomado de: https://i.blogs.es/b397ad/play-services-diagram/ A continuación, se presenta tres fichas que muestra las SDK instalados y componentes adicionales Figura 15: API instalado en Android studio Fuente. -propia Por otro lado, tenemos componentes de apoyo del SDK como por ejemplo drivers para conectar directamente el celular o lo más importante Intel creo un acelerador de desarrollo para mejorar la velocidad de lectura y ejecución de aplicaciones en el emulador o el dispositivo emulado como el HAXM como se muestra en el siguiente grafico Figura 16: SDK Tools instalados ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 19 Fuente. -propia Descargar e instar Android Studio Android studio es el IDE oficial para el desarrollo de aplicaciones móviles para Android fue lanzado en diciembre del 2014, inicialmente fue anunciado en la conferencia de Google I/O mayo 2013. Para comenzar a utilizar Android Studio se debe descargar ingresando al link de descargar desde el portal de desarrollo de Android Developer https://developer.android.com/studio ubicar el link de descarga de archivos Figura 17: Descarga de Android studio Fuente. - Tomado de https://developer.android.com/studio No olvidarse que se debe tener instalado la JDK de java, para descargarlo debes ingresar y registrarte en el portal de Oracle Una vez descargado se debe realizar la instalación considerando los siguientes pasos: 1. Instalar JDK de Java 2. Instalar Android Studio 3. Descargar SDK de Android (API 28, 29 e Imagen del emulador) Figura 18: Instaladores descargados Fuente. - Propia Descargar e instar emulador Para que nuestro entorno de desarrollo este completo debemos instalar los emuladores para ejecutar nuestra aplicación para ello una vez tengamos el Ide de Android studio en ejecución debemos crear un dispositivo virtual accediendo al menú AVD Manager como se muestra en la siguiente imagen Figura 19: Ingresar al administrador de emuladores Fuente. - Propia IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 20 ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 21 Una vez se accede a la opción se muestra la pantalla de para crear emuladores Figura 20: Asistente para crear emuladores Fuente. - Propia Dar click en el botón que dice Create virtual device En la pantalla que se muestra seleccionar las siguientes opciones Figura 21: Asistente para crear emuladores Fuente. - Propia Dar click en next y luego se muestra las imágenes descargados en el equipo Figura 22: Asistente para crear emuladores Fuente. - Propia Aquellos emuladores que ya se encuentran instalado se encuentra sin el texto que indica download para nuestro caso vamos a descargar Android pie, al seleccionarlo se muestra la ventana de licencia como se muestra en la siguiente imagen IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 22 Figura 23: Licencia de emulador Pie Fuente. - Propia Una vez aceptado se muestra la ventana de descarga de componentes Figura 24: Descarga de API Fuente. - Propia Figura25: Emulador descargado Fuente. – Propia Finalmente dar click en next y luego en finish y ya tenemos el emulador creado Figura 26: Lista de emuladores Fuente. – Propia ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 23 Al ejecutar en play el emulador creado se muestra el emulador de celular similar a la imagen Al Figura 27: Emulador en ejecución Fuente. – Propia 1.1.7. Android Runtime El Runtime de Android es la base de la arquitectura de Android basado en los procesadores disponibles de la época inicialmente nació con Dalvik que tiene la característica de trabajar con procesadores 32 bits sin embargo con el tiempo y los avances tecnológicos en hardware nació ART que tiene soporte tanto para procesadores de 64 bits. A continuación revisamos los dos casos Dalvik Virtual Machine Dalvik es la máquina virtual que utiliza la plataforma para dispositivos móviles Android. Dalvik ha sido diseñada por Dan Bernstein con contribuciones de otros ingenieros de Google. La Máquina Virtual Dalvik (DVM) permite ejecutar aplicaciones programadas en Java. La DVM no afirma ser una máquina virtual de java (JVM) debido a que le ocasionaría problemas de licenciamiento, sin embargo, cumple ese propósito. La mayoría de los programas escritos en Java 5 pueden correr sobre la DVM. DVM sacrifica la portabilidad que caracteriza a Java para poder crear aplicaciones con un mejor rendimiento y menor consumo de energía, estas dos características son extremadamente importantes en dispositivos móviles, debido a que la capacidad de las baterías en estos dispositivos es limitada. DVM está optimizada para requerir poca memoria y está diseñada para permitir ejecutar varias instancias de la máquina virtual simultáneamente, delegando en el sistema operativo subyacente el soporte de aislamiento de procesos, gestión de memoria e hilos. IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 24 Figura 28: Arquitectura de android Fuente.- Tomado de https://jarroba.com/arquitectura-android-art-vs-dalvik/ A menudo Dalvik es nombrada una máquina virtual Java, pero esto no es estrictamente correcto, ya que el bytecode con el que opera no es Java bytecode. Sin embargo, la herramienta dx incluida en el SDK de Android permite transformar los archivos Class de Java compilados por un compilador Java al formato de archivos Dex. El nombre de Dalvik fue elegido por Bornstein en honor a Dalvík, un pueblo de Eyjafjörður, Islandia, donde vivieron antepasados suyos.2 Android Runtime (ART) Esta máquina virtual permite que las aplicaciones se compilen en código nativo, lo cual ayuda a que las aplicaciones se carguen más rápido y que traiga el soporte de procesadores de 64 bits. Google dice que con ART se estima que el desempeño mejore cuatro veces.  Los nuevos dispositivos vienen con la encriptación automática activa para proteger tu información en el caso de que te roben o pierdas el dispositivo.  Menor latencia en la entrada de sonido permite que la música y las apps de comunicaciones ofrezcan una mejor experiencia con mayor fluidez. Que contiene el archivo de instalación APK El archivo instalador en Android es un APK, es un archivo empaquetado que tiene todos los componentes necesarios para ser ejecutados en un celular. Ejemplo de ello podemos apreciar la imagen que se muestra a continuación: 2 Referencia a la fuente: http://es.wikipedia.org/wiki/Dalvik ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 25 Figura 29: Contenido del Archivo APK Fuente: Tomado de https://jarroba.com/arquitectura-android-art-vs-dalvik/ 1.1.8. Introducción al lenguaje kotlin ¿Qué es Kotlin? Kotlin es un lenguaje de programación de tipado estático que corre sobre la máquina virtual de Java y que también puede ser compilado a código fuente de JavaScript. Es desarrollado principalmente por JetBrains en sus oficinas de San Petersburgo (Rusia). El nombre proviene de la isla de Kotlin, situada cerca de San Petersburgo. Android 3 Sintaxis del lenguaje Kotlin Al igual que Pascal, Haxe, PL/SQL, F#, Go y Scala —y a diferencia de C y sus derivados como C++, Java, C#, y D— la declaración de variables y listas de parámetros en Kotlin tienen el tipo de dato después del identificador y un separador de dos puntos. Igual que en otros lenguajes modernos como Scala y Groovy, los puntos y comas son opcionales como final de sentencia; en muchos casos un salto de línea es suficiente para que el compilador pueda deducir que la declaración terminó. Figura 30: Sintaxis del lenguaje kotlin Fuente: propia 3 Fuente: https://es.wikipedia.org/wiki/Kotlin_(lenguaje_de_programaci%C3%B3n) IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 26 1.1.9. Android Studio Android Studio es el entorno de desarrollo integrado (IDE) oficial para el desarrollo de apps para Android, basado en IntelliJ IDEA. Además del potente editor de códigos y las herramientas para desarrolladores de IntelliJ, Android Studio ofrece incluso más funciones que aumentan tu productividad cuando desarrollas apps para Android, como las siguientes:  Un sistema de compilación flexible basado en Gradle  Un emulador rápido y cargado de funciones  Un entorno unificado donde puedes desarrollar para todos los dispositivos Android  Aplicación de cambios para insertar cambios de códigos y recursos a la aplicación en ejecución sin reiniciar la aplicación  Integración con GitHub y plantillas de código para ayudarte a compilar funciones de apps comunes y también importar código de ejemplo  Variedad de marcos de trabajo y herramientas de prueba  Herramientas de Lint para identificar problemas de rendimiento, usabilidad y compatibilidad de la versión, entre otros  Compatibilidad con C++ y NDK  Compatibilidad integrada para Google Cloud Platform, que facilita la integración con Google Cloud Messaging y App Engine4 Creación de emuladores Para iniciar en el desarrollo de aplicaciones móviles con Android es necesario tener un emulador, un emulador es una aplicación que simula ser un equipo físico para ello debemos hacer uso del administrador de máquinas virtuales. Para ello se debe dar clic en el administrador de máquinas virtuales Figura 31: Sintaxis del lenguaje kotlin Fuente: propia En la pantalla se debe elegir uno de los dispositivos y posterior a ello se debe descargar los drivers y/o librerías que sean necesarios. Figura 32: Sintaxis del lenguaje kotlin Fuente: propia 4 Fuente: http://www.cnet.com/es/analisis/google-android-5-0-lollipop/ ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 27 Para más detalles puedes ir a la sección Descargar e instar emulador Resumen 1. Android es un sistema operativo creado para plataforma Smartphone, tablet, electrodomésticos y autos. 2. Android está basado en Linux 2.6 3. Existe una librería (API) para cada tipo de dispositivo. 4. XML es la base para crear el diseño de pantallas. 5. Una aplicación ejecutable es un *.APK (Application PacKage File) 6. Las herramientas básicas para desarrollar en Android son: 7. Toda aplicación se ejecuta en una máquina virtual o física. 8. Android tiene su propio sistema de almacenamiento Recursos Pueden revisar los siguientes enlaces para ampliar los conceptos vistos en esta unidad: o https://developer.android.com/guide/?hl=es-419 o http://cursoslared.com/recursoslibre/TutorialAndroidPrincipiantes.pdf o https://www.youtube.com/watch?v=pO7STLF82Ro IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 28 1.2. ESTRUCTURA DE PROYECTOS MATERIAL DESIGN 1.2.1. IDE de Android Studio Una vez instalado el entorno de desarrollo integrado IDE Una vez instalado Android Studio, el IDE (Entorno de desarrollo integrado) está basado en IntelliJ IDEA de JetBrains para facilitar la generación de código para los desarrolladores de Android está disponible para plataforma Windows, MAC O/S y linux, lo más resaltante de Android Studio es la ayuda integrada para comenzar debes crear un proyecto. Figura 33: Intelligent code editor Fuente. - Propia Figura 34: Intelligent code editor Fuente. - propia ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 29 Una vez creado el proyecto se presenta en entorno de desarrollo donde tenemos las siguientes partes de un proyecto creado en Android Studio. 1.2.2. Estructura de proyectos Android, vistas Cada proyecto de Android Studio incluye uno o más módulos con archivos de código fuente y archivos de recursos. Entre los tipos de módulos se incluyen los siguientes:  Módulos de apps para Android  Módulos de biblioteca  Módulos de Google App Engine De manera predeterminada, Android Studio muestra los archivos de tu proyecto en la vista de proyecto de Android, como se ve en la Figura 1. Esta vista está organizada en módulos para que puedas acceder rápidamente a los archivos fuente clave de tu proyecto. Puedes ver todos los archivos de compilación en el nivel superior de Secuencias de comando de Gradle y cada módulo de app contiene las siguientes carpetas:  manifests: Contiene el archivo AndroidManifest.xml.  java: Contiene los archivos de código fuente Java, incluido el código de prueba de JUnit.  res: Contiene todos los recursos sin código, como diseños XML, strings de IU e imágenes de mapa de bits. La estructura del proyecto de Android en el disco difiere de esta representación plana. Fuente de información: https://developer.android.com/studio/intro Figura 35: Intelligent code editor Fuente. - Tomado de https://developer.android.com/studio/intro La barra de herramientas te permite realizar una gran variedad de acciones, como ejecutar tu app e iniciar las herramientas de Android. La barra de navegación te ayuda a explorar tu proyecto y abrir archivos para editar. Proporciona una vista más compacta de la estructura visible en la ventana Project. IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 30 La ventana del editor es el área en la que puedes crear y modificar código. Según el tipo de actividad actual, el editor puede cambiar. Por ejemplo, cuando ves un archivo de diseño, el editor muestra el Editor de diseño. La barra de la ventana de herramientas se encuentra afuera de la ventana del IDE y contiene los botones que te permiten expandir o contraer ventanas de herramientas individuales. Las ventanas de herramientas te brindan acceso a tareas específicas, como la administración de proyectos, la búsqueda, el control de versiones, entre otras. Puedes expandirlas y contraerlas. En la barra de estado, se muestra el estado de tu proyecto y el IDE, además de advertencias o mensajes. Puedes organizar la ventana principal para tener más espacio en pantalla si ocultas o desplazas las barras y ventanas de herramientas. También puedes usar combinaciones de teclas para acceder a la mayoría de las funciones del IDE. 1.2.3. Recursos de una aplicación Toda aplicación en Android maneja un conjunto de archivos de recursos que permite incorporar imágenes, archivos de música y/o video, menús, archivos xml de menús, archivos de archivos cadenas de textos idioma y otros. La siguiente imagen muestra los archivos de recursos del proyecto. Figura 36: Recurso de un proyecto Fuente. - propia Archivo de colores Values/colors.xml #24601D #4AAA28 #5D3822 #FF5722 #FF5733 #FFFFFF #FFFFFF #0E80D9 #FFFFFF ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 31 1.2.4. Configuración de una aplicación Graddle Gradle, es una herramienta que permite la automatización de compilación de código abierto, la cual se encuentra centrada en la flexibilidad y el rendimiento. Los scripts de compilación de Gradle se escriben utilizando Groovy o Kotlin DSL (Domain Specific Language). Gradle tiene una gran flexibilidad y nos deja hacer usos otros lenguajes y no solo de Java , también cuenta con un sistema de gestión de dependencias muy estable. Gradle es altamente personalizable y rápido ya que completa las tareas de forma rápida y precisa reutilizando las salidas de las ejecuciones anteriores, sólo procesar las entradas que presentan cambios en paralelo. Figura 37: archivo graddle Configuración Fuente. - propia 1.2.5. Que es un Activity, ciclo de vida de un activity Un Activity (actividad) es una clase que permite manejar los eventos de cualquier aplicación desarrollada en Android, está diseñada para controlar toda la funcionalidad de cualquier aplicación, Podemos decir que todas las pantallas de una aplicación son una “activity”. Más adelante vamos a ver que existen algunas variaciones, por ejemplo, que si una aplicación tiene cinco pantallas, tiene 5 “Actividades” o activities. Las activities están conformadas por dos partes: la parte lógica y la parte gráfica. La parte lógica es un archivo.java que es la clase que se crea para poder manipular, interactuar y colocar el código de esa actividad. Toda actividad debe tener asociado una pantalla La parte gráfica es un XML que tiene todos los elementos que estamos viendo de una pantalla declarados con etiquetas parecidas a las del HTML, es decir, que el diseño de una aplicación en Android se hace similar a una página web; XML es un primo de HTML. IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 32 Resumiendo, una actividad está conformada por la parte lógica (un archivo Java) y la parte gráfica (un archivo XML). Profundizando más en el tema, ya sabemos que tenemos un archivo.java, esto quiere decir que tenemos una clase principal, al ser una actividad extiende de la clase Activity (por eso el nombre) que nos proporciona Android para crear actividades con sus métodos asignados. Un ejemplo de nuestro activity "MaActivity.java" podemos apreciar el código: Figura 38: la clase Activity Fuente. - propia Ciclos de vida de las actividades Para navegar por las transiciones entre las etapas del ciclo de vida de una actividad, la clase Activity proporciona un conjunto básico de seis eventos que son ejecutados: onCreate(), onStart(), onResume(), onPause(), onStop() y onDestroy(). El sistema invoca cada uno de estos eventos cuando una operación entra en un nuevo estado.  Cuando el usuario comienza a abandonar la actividad, el sistema llama a métodos para desmantelarla. En algunos casos, este desmantelamiento es solo parcial; la actividad todavía reside en la memoria (por ejemplo, cuando el usuario cambia a otra app) y aún puede volver al primer plano. Si el usuario regresa a esa actividad, se reanuda desde donde el usuario la dejó. Con algunas excepciones, se restringe a las apps para que no inicien actividades cuando se ejecutan en segundo plano.  La probabilidad de que el sistema finalice un proceso determinado, junto con las actividades que contiene, depende del estado de la actividad en ese momento. En Estado de la actividad y expulsión de la memoria, obtendrás más información sobre la relación entre el estado y la vulnerabilidad a la expulsión.  Según la complejidad de tu actividad, probablemente no necesites implementar todos los métodos de ciclo de vida. Sin embargo, es importante que comprendas cada uno de ellos y que implementes aquellos que garanticen que tu app se comporte como esperan los usuarios. En la siguiente imagen 42 podemos apreciar cada uno de los eventos por el que pasas cuando la activity comienza ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 33 Figura 39: la clase Activity Fuente. -tomado de https://developer.android.com/guide/components/images/activity_lifecycle.png?hl=es-419 onCreate() Debes implementar esta devolución de llamada, que se activa cuando el sistema crea la actividad por primera vez. Cuando se crea la actividad, esta entra en el estado Created. En el método onCreate(), ejecutas la lógica de arranque básica de la aplicación que debe ocurrir una sola vez en toda la vida de la actividad. Por ejemplo, tu implementación de onCreate() podría vincular datos a listas, asociar la actividad con un ViewModel y crear instancias de algunas variables de alcance de clase. Este método recibe el parámetro savedInstanceState, que es un objeto Bundle que contiene el estado ya guardado de la actividad. Si la actividad nunca ha existido, el valor del objeto Bundle es nulo. Si tienes un componente que prioriza el ciclo de vida y que está conectado al ciclo de vida de tu actividad, recibirá el evento ON_CREATE. Se llamará al método anotado con IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 34 @OnLifecycleEvent para que tu componente que prioriza el ciclo de vida pueda realizar cualquier código de configuración que necesite para el estado de creación. onStart() Cuando la actividad entra en el estado Started, el sistema invoca esta devolución de llamada. La llamada onStart() hace que el usuario pueda ver la actividad, mientras la app se prepara para que esta entre en primer plano y se convierta en interactiva. Por ejemplo, este método es donde la app inicializa el código que mantiene la IU. Cuando la actividad pase al estado Started, cualquier componente que priorice el ciclo de vida vinculado al de la actividad recibirá el evento ON_START. El método onStart() se completa muy rápido y, al igual que con el estado Created, la actividad no permanece en el estado Started. Una vez finalizada esta devolución de llamada, la actividad entra en el estado Resumed, y el sistema invoca el método onResume(). onResume() Cuando la actividad entra en el estado Resumed, pasa al primer plano y, a continuación, el sistema invoca la devolución de llamada onResume(). Este es el estado en el que la app interactúa con el usuario. La app permanece en este estado hasta que ocurre algún evento que la quita de foco. Tal evento podría ser, por ejemplo, recibir una llamada telefónica, que el usuario navegue a otra actividad o que se apague la pantalla del dispositivo. Cuando se reanude la actividad, cualquier componente que priorice el ciclo de vida vinculado al de la actividad recibirá el evento ON_RESUME. Aquí es donde los componentes del ciclo de vida pueden habilitar cualquier funcionalidad que necesite ejecutarse mientras el componente está visible y en primer plano, como, por ejemplo, iniciar una vista previa de la cámara. onPause() El sistema llama a este método a modo de primera indicación de que el usuario está abandonando tu actividad (aunque no siempre significa que está finalizando la actividad); indica que la actividad ya no está en primer plano (aunque puede seguir siendo visible si el usuario está en el modo multiventana). Utiliza el método onPause() para pausar o ajustar las operaciones que no deben continuar (o que deben continuar con moderación) mientras Activity se encuentra en estado Paused, y que esperas reanudar en breve. Hay varias razones por las que una actividad puede entrar en este estado. Por ejemplo: Algunos eventos interrumpen la ejecución de la app, como se describe en la sección onResume(). Este es el caso más común. En Android 7.0 (API nivel 24) o versiones posteriores, varias apps se ejecutan en el modo multiventana. Debido a que solo una de las apps (ventanas) tiene foco en cualquier momento, el sistema pausa todas las demás. Se abre una nueva actividad semitransparente (como un diálogo). Mientras la actividad siga siendo parcialmente visible, pero no esté en foco, se mantendrá pausada. Cuando la actividad pase al estado de pausa, cualquier componente que priorice el ciclo de vida vinculado al ciclo de vida de la actividad recibirá el evento ON_PAUSE. Aquí es donde los componentes del ciclo de vida pueden detener cualquier funcionalidad que no necesite ejecutarse mientras el componente no esté en primer plano, como detener una vista previa de la cámara. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 35 onStop() Cuando el usuario ya no puede ver tu actividad, significa que ha entrado en el estado Stopped, y el sistema invoca la devolución de llamada onStop(). Esto puede ocurrir, por ejemplo, cuando una actividad recién lanzada cubre toda la pantalla. El sistema también puede llamar a onStop() cuando haya terminado la actividad y esté a punto de finalizar. Cuando la actividad pase al estado Stopped, cualquier componente que priorice el ciclo de vida vinculado al de la actividad recibirá el evento ON_STOP. Aquí es donde los componentes del ciclo de vida pueden detener cualquier funcionalidad que no necesite ejecutarse mientras el componente no sea visible en la pantalla. En el método onStop(), la app debe liberar o ajustar los recursos que no son necesarios mientras no sea visible para el usuario. Por ejemplo, tu app podría pausar animaciones o cambiar de actualizaciones de ubicación detalladas a más generales. Usar onStop() en lugar de onPause() garantiza que continúe el trabajo relacionado con la IU, incluso cuando el usuario esté viendo tu actividad en el modo multiventana. onDestroy() Se llama a onDestroy() antes de que finalice la actividad. El sistema invoca esta devolución de llamada por los siguientes motivos: La actividad está terminando (debido a que el usuario la descarta por completo o a que se llama a finish()). El sistema está finalizando temporalmente la actividad debido a un cambio de configuración (como la rotación de la pantalla o el modo multiventana). Cuando la actividad pase al estado Destroyed, cualquier componente que priorice el ciclo de vida vinculado al de la actividad recibirá el evento ON_DESTROY. Aquí es donde los componentes del ciclo de vida pueden recuperar cualquier elemento que se necesite antes de que finalice el objeto Activity.5 5 https://developer.android.com/guide/components/activities/activity-lifecycle?hl=es-419 IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 36 Figura 40: Eventos del ciclo de vida de un Activity Fuente. - propia 1.2.6. Moverse entre actividades Que es un Intent Android usa los intent como mecanismo para invocar componentes entre ellos pantallas, llamadas a funcionalidades propias del sistema, etc, los intents son bastante fáciles de comprender. Básicamente nos permiten llamar a aplicaciones externas a la nuestra, lanzar eventos a los que otras aplicaciones puedan responder, lanzar alarmas etc. Como Ejemplo: Tenemos el siguiente activity creado class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } } El layout R.Layout.MainActivity debe estar declarado y ser un archivo de layout valido. Una vez creado este archivo de layout, es necesario registrarlo en el AndroidManifest, que será algo así tal como lo vemos en la primera aplicación que desarrollamos: ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 37 Figura 41: Archivo de manifiesto Fuente. - propia El registro de la activity se realiza de forma automática, tal como también se registra una acción que podremos usar para invocar a dicha actividad. El diseñador de la actividad puede asignar el nombre que crea conveniente a la acción. Ahora que ya está todo listo, podemos lanzar un intent para llamar a esta actividad: fun VistaPrincipal (v: View?) { val actionName = "android.intent.action.MAIN" val intent = Intent(actionName) intent.putExtra("Nombres", "Santiago") startActivity(intent) } La convención que se usa para nombrar una acción suele ser android.intent.action.MAIN Una vez que se invoca a la actividad, ésta tiene la posibilidad de recuperar el intent que la llamó. Y podemos recuperarlo del siguiente modo: //Este código se inserta en el método onCreate() de la actividad. var oIntento: Intent?=null oIntento = this.intent if (oIntento == null){ Log.d("Tag", "La actividad no se ha llamado mediante un intent.") } Funcionalidad y uso de Intents Se puede encontrar una lista con las aplicaciones disponibles en Android junto con los intents que las invocan. Por ejemplo, para el navegador web, tenemos dos acciones, VIEW y WEB_SEARCH, que abren el navegador en una url específica o realizan una búsqueda. En el caso del dialer (marcador), tenemos las acciones CALL y DIAL, que vienen dadas por la URI tel: numero_de_teléfono, la diferencia entre estas dos acciones, es que CALL realiza la llamada al número de la URI, y DIAL solo lo marca, pero no realiza la llamada. IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 38 Ejemplos de uso de Intent Ejemplo para abrir en nevegador predeterminado en el celular Abrir el buscador predeterminado en el celular fun AbrirVentanaNAvegador(v: View?) { var oIntento: Intent?=null oIntento = Intent(Intent.ACTION_VIEW) oIntento.setData(Uri.parse("http://www.google.com")) startActivity(oIntento) } fun AbrirBuscardorWeb(v: View?) { var oIntento: Intent?=null oIntento = Intent(Intent.ACTION_WEB_SEARCH) oIntento.setData(Uri.parse("http://www.google.com")) startActivity(oIntento) } fun Abrirllamada(v: View?) { var oIntento: Intent?=null oIntento = Intent(Intent.ACTION_DIAL) startActivity(oIntento) } fun Llamar(v: View?) { var oIntento: Intent?=null oIntento = Intent(Intent.ACTION_CALL) oIntento.setData(Uri.parse("tel:555-555-555")) startActivity(oIntento) } fun AbrirGoogleMaps(v: View?) { var oIntento: Intent?=null oIntento = Intent(Intent.ACTION_VIEW) oIntento.setData(Uri.parse("geo:0,0?z=4&q=restaurantes")) startActivity(oIntento) } Pasar datos entre activitys mediante Intent Para este ejemplo se pasa la variable Nombres con el valor Santiago val intent = Intent(this, ListadoClientes::class.java) intent.putExtra("Nombres", "Santiago") startActivity(intent) ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 39 Recuperar los datos provenientes de una llamada mediante intent Para ello se debe realizar de la siguiente manera: El siguiente código se debe agregar en el evento onCreate del activity llamado var oIntento: Intent?=null oIntento = this.intent if (oIntento == null){ Log.d("Tag", "La actividad no se ha llamado mediante un intent.") } else { var strNombres: String = "" strNombres = oIntento.getStringExtra("Nombres") } 1.2.7. Vistas en Android Que son las vistas Todo elemento visual como un texto, un botón, cuadro de texto, etc en Android es una vista y conforme se va agrupando se convierte en una vista agrupada para ello vamos a revisar los componentes generales de la interfaz de usuario como son las UI o interfaz gráfica de usuario. Todos los elementos de la interfaz de usuario de una app para Android están desarrollados con objetos View y ViewGroup. Una View es un objeto que dibuja algo en la pantalla con lo que el usuario puede interactuar. Un ViewGroup es un objeto que tiene otros objetos View (y ViewGroup) para definir el diseño de la interfaz. Android proporciona una colección de subclases View y ViewGroup que te ofrecen controles de entrada comunes (como los botones y los campos de texto) y varios modelos de diseño (como un diseño lineal o relativo).6 Figura 42: Archivos de vistas Fuente. - Tomado de https://developer.android.com/images/viewgroup.png?hl=es-419 Tenemos dos formas de declarar los diseños: 1. Declarar elementos de la IU en XML. Android proporciona un vocabulario XML simple que coincide con las clases y subclases de vistas, como las que se usan para widgets y diseños. 6 https://developer.android.com/guide/topics/ui/overview?hl=es-419 IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 40 También puedes utilizar la función Layout Editor de Android Studio para crear tu diseño XML mediante una interfaz de arrastrar y soltar. 2. Crear una instancia de elementos de diseño durante el tiempo de ejecución. Tu aplicación puede crear objetos View y ViewGroup (y manipular sus propiedades) de forma programática. El siguiente diseño ha sido creado por Android studio Figura 43: Diseño de pantalla Fuente. - Tomado de https://developer.android.com/images/viewgroup.png?hl=es-419 1.2.8. Layout y Tipos de Layout Los layout son agrupadores de vista se utilizan para iniciar una pantalla en Android para ello tenemos diferentes tipos de layout que se han creado para tener mejor diseño de pantalla y adaptarse a los diferentes dispositivos y tamaños de pantalla que existen en el mercado de dispositivos Android. LinearLayout Este diseño de pantalla permite asignar los controles uno en cada línea de tal manera que siempre en cualquier tipo de pantalla se ajusta automáticamente. Como se muestra en el siguiente ejemplo cada control agregado a la pantalla se muestra en una línea a parte ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 41 Figura 44: Vista Lnnear Layout Fuente. -propia Figura 45: Vista Linnear Layout Fuente. -propia Relative Layout Es una vista donde los controles que se asigna son dependientes de otro por ejemplo si ponemos una imagen se muestra al costado de otro formando una dependencia entre sí, este diseño es más utilizado para controles que deben ajustarse en una vista contenedora. Ejemplo: Figura 46: Vista Relative Layout Fuente. -propia IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 42 1.2.9. Material Design y widgets Que es Material design Material design es una normativa de diseño enfocado en la visualización del sistema operativo Android, además en la web y en cualquier plataforma. Fue desarrollado por Google y anunciado en la conferencia Google I/O celebrada el 25 de junio de 2014. Ampliando la interfaz de tarjetas vista por primera vez en Google Now. Material se integró en Android Lollipop como reemplazo de Holo, anteriormente utilizado desde Android 4 y sucesores. La filosofía también se aplicó en Google Drive y Google Docs, Sheets y Slides, y se irá extendiendo progresivamente a todos los productos de Google (incluyendo Google Search, Gmail y Google Calendar), proporcionando una experiencia consistente en todas las plataformas. Google también lanzó APIs para que los desarrolladores externos incorporaran Material Design a sus aplicaciones.7 1.2.10. Controles FloatingActionButton y textinputLayout un float action button es un botón para destacar una acción en tu app. Se caracteriza por tener una forma circular, un icono interno que representa la acción, una reacción de superficie y la capacidad de cambiar de forma, desplazarse e interactuar con otros elementos. Figura 47: Vista botones Flotantes Fuente.- propia Fuente. -propia Figura 48: Vista botones Flotantes Fuente. -propia viene en dos tamaños: por defecto (56dp) y mini (24dp). El primero se usa para proporcionar acciones generales, el segundo se adapta mejor cuando se necesita un elemento que siga el mismo patrón de orientación de otros componentes. 7 https://es.wikipedia.org/wiki/Material_Design ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 43 Figura 49: Como funciona material design Fuente. - Tomado de http://www.hermosaprogramacion.com/wp-content/uploads/2016/01/floating-action-button-material- design.png se define por la clase FloatingActionButton. En Xml usa la etiqueta para representar el view dentro de un layout. FloatingActionButton Un botón de acción flotante (FAB) es un botón circular que activa la acción principal en la IU de tu app. En esta página, se muestra cómo agregar el FAB al diseño, personalizar parte de su aspecto y responder cuando se presionan los botones. Figura 50: Como funciona material design Fuente. - Tomado de https://developer.android.com/training/material/images/fab.png TextInputLayout El nuevo esquema de diseño de Google exige que cuando el usuario establezca el foco en un campo de texto, su hint debe flotar hacia la parte superior, proporcionando espacio para el texto. Esto asegura que el usuario nunca pierda el contexto del contenido que está digitando. Para el texto de la entrada y el hint usa tamaños de 16sp. En el caso de la etiqueta se asigna el estilo caption de 12sp. En total el área completa mide 72dp, contando el padding entre los componentes. IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 44 Figura 51: TextInputLayout Como funciona Fuente. - Tomado de http://www.hermosaprogramacion.com Diseño completo de controles material design Crear un proyecto nuevo denominado Registro de empresas El diseño final deberá quedar como se muestra Figura 52: diseño de pantalla Fuente. - propia Crear un proyecto utilizando la plantilla Agregar imágenes vectoriales en la carpeta drawable Figura 53: diseño de pantalla recursos Fuente. - propia Agregar los controles en el layout content_main.xml como se muestra a continuación ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 45 Figura 54: diseño de pantalla vista controles Fuente. - propia IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 46 Resumen 1. Las aplicaciones en Android están formadas por dos archivos el layout(diseño en XML) y el activity que es el código fuente en lenguaje de programación. 2. Las activitys tienen un ciclo de vida que depende de las funciones que tiene el celular y no tienen un control propio de su estado por ello es necesario programar varios eventos que permitan controlar la perdida de información 3. Los diseños de pantalla están creados para ser utilizados en cualquier dispositivo móvil dependerá de la forma de organización de controles y contendores para que se visualice correctamemente 4. Los diseños avanzados con controles especializados de material design permiten tener mejor interfaz gráfica que permitirá a los usuarios mejor experiencia con la aplicación para ello los desarrolladores de Android se han enfocado en utilizar funciones de gráficos vectoriales de tal manera que no pierdan la estancia ni el diseño. Recursos Pueden revisar los siguientes enlaces para ampliar los conceptos vistos en esta unidad: o https://developer.android.com/guide/?hl=es-419 o http://cursoslared.com/recursoslibre/TutorialAndroidPrincipiantes.pdf o https://developer.android.com/guide/components/activities o https://developer.android.com/guide/topics/ui/overview?hl=es-419 o https://developer.android.com/images/viewgroup.png?hl=es-419 ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 47 UNIDAD 2 COMPONENTES Y LENGUAJE KOTLIN LOGRO DE LA UNIDAD DE APRENDIZAJE Al término de la unidad, el alumno elabora aplicaciones utilizando el lenguaje Kotlin que integran Activities, componentes visuales de material design, Intents y recursos externos pertenecientes a la plataforma Android. TEMARIO 2.1 Tema 3 : Lenguaje de programación Kotlin y Material Design 2.1.1 : Tipos de datos, arreglos, Variables (var, val) 2.1.2 : funciones, métodos 2.1.3 : Clases, Métodos, Objetos 2.1.4 : Loops, for, while, if/if-else 2.1.5 : Eventos, Programación de eventos 2.1.6 : Listas y Adaptadores, RecyclerView, BaseAdapter, ArrayAdapter 2.2 Tema 4 : Diálogos, notificaciones 2.2.1 : Dialog Window y Progress Dialog 2.2.2 : Dialogos personalizados basados en clases 2.3 Tema 5 : Diseño avanzado controles enlazados a datos 2.3.1 : Diseño de interfaz de usuario con Views Avanzados: RecycledView 2.3.2 : Clase RecyclerView.Adapter, ViewHolder 2.3.3 : GridView Diseño avanzado 2.3.4 : Introducción Fragments 2.3.5 : Declarando Fragments , fragments dinámicos 2.3.6 : Visualizando Fragments básicos IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 48 ACTIVIDADES PROPUESTAS  Aprende el lenguaje Kotlin como lenguaje de desarrollo estándar de Android  Distingue los diferentes eventos que se ejecutan en un Activity  Aprende a utilizar componentes enlazados a datos  Aprende a utilizar las diferentes formas de uso de los Intent  Aprende y desarrolla utilizando el lenguaje kotlin  Aprende a crear los mensajes de dialogo ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 49 2.1. LENGUAJE DE PROGRAMACIÓN KOTLIN Y MATERIAL DESIGN Lenguaje de programación Kotlin Kotlin es un lenguaje de programación que los desarrolladores de Android utilizan en gran medida en todo el mundo. Este tema funciona como un curso intensivo de Kotlin para que puedas configurarlo y comenzar a utilizarlo rápidamente.8 Ejemplo de activity en kotlin Figura 55: activity lenguaje kotlin Fuente: propia Características Kotlin  Seguro contra nulos: Uno de los mayores problemas de usar java son los NullPointerException. Esto ocasiona una gran cantidad de problemas a la hora de desarrollar. Con Kotlin nos olvidaremos de esto pues nos obliga para tener en cuenta los posibles null.  Ahorra código: Con kotlin podrás evitar muchísimas líneas de código en comparación con otros lenguajes. Imagina hacer un POJO (Plain Old Java Objects) en una sola línea en vez de 50-100.  Características de programación funcional: Kotlin está desarrollado para que trabajemos tanto orientado a objetos, como funcional (e incluso mezclarlos), lo que nos dará mucha más  Fácil de usar: Al estar inspirado en lenguajes ya existentes como Java, C# o Scala, la curva de aprendizaje nos será bastante sencilla 8 https://developer.android.com/kotlin/learn IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 50 2.1.1. Tipos de datos, arreglos, variables (var, val) Toda variable en Kotlin tiene la siguiente sintaxis Palabra reservada | nombre de variable: Tipo de dato = valor inicial Figura 56: Sintaxis del lenguaje kotlin Fuente: propia Variables de solo lectura o constantes Para declarar las variables de solo lectura se utiliza la palabra reservada de val val ESTADO_ANULADO = 1 Tipos de datos entero Los enteros tienen una variación de longitudes por ello tenemos el siguiente cuadro: Figura 57: Sintaxis del lenguaje kotlin Fuente: Tomado de https://kotlinlang.org/docs/tutorials/kotlin-for-py/primitive-data-types-and-their-limitations.html 2.1.2. Funciones y métodos Los métodos y funciones tienen una sola definición en Kotlin se utiliza la palabra reservada fun //Función fun AprobarSolicitud(pCodigoSolicitud: Int ):String { return "" } //Metodo fun ProcesarSolicitud(pCodigoSolicitud: Int ) { } Funciones anónimas No todas las funciones necesitan un nombre. Algunas funciones se pueden identificar de manera más directa a través de sus entradas y resultados. Estas funciones se conocen como funciones anónimas. Puedes mantener una referencia a una función anónima y utilizarla para llamar a la función más tarde. También puedes pasar la referencia a tu aplicación, del mismo modo que lo haces con otros tipos de referencia. //ejemplo de función anonima val longitudCadena: (String) -> Int = { input -> input.length } ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 51 Concatenar caracteres Para concatenar variabes se debe utilizar la siguiente sintaxis: Variable = “Cadena: ${variable}” Ejemplo: var MontoTotal: Double=0.0 MontoTotal = 1550.98 var CadenaTexto: String ="" CadenaTexto = "Monto Total: ${MontoTotal.toString()}" 2.1.3. Clases, Métodos , Objetos Todos los tipos mencionados hasta ahora están integrados en el lenguaje de programación Kotlin. Si deseas agregar tu propio tipo personalizado, puedes definir una clase mediante la palabra clave class, como se muestra en el siguiente ejemplo: class Cliente Propiedades Las clases representan propiedades que usan estados. Una propiedad es una variable a nivel de la clase que puede incluir un captador, un establecedor y un campo de copia de seguridad. Ya que un auto necesita ruedas para andar, puedes agregar una lista de objetos Wheel como una propiedad de Car, como se muestra en el siguiente ejemplo: class Cliente { val ListaFacturas = listOf() } Ejemplo de creación de la clase empleado IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 52 Figura 58: Sintaxis del lenguaje kotlin Fuente: propia Interoperabilidad Una de las funciones más importantes de Kotlin es la excelente interoperabilidad que tiene con Java. Debido a que el código Kotlin compila el código de bytes de JVM, tu código Kotlin puedes llamar directamente al código Java, y viceversa. Eso quiere decir que puedes aprovechar las bibliotecas de Java existentes directamente desde Kotlin. Además, la mayoría de las API de Android están escritas en Java y puedes llamarlas directamente desde Kotlin. 2.1.4. Loops, for, while, if / if-else For.- secuencia repetitiva que inicia en un valor hasta un valor final la sintaxis es la siguiente: var ifila: Int = 0 for (ifila in 1..5) { println("numero: $ifila") } while- es una secuencia repetiva que se ejecuta mientras exista una condición y el valor este en verdadero tenemos el siguiente ejemplo: var ndia: Int = 0 while (ndia < 6) { if (ndia == 1) { println("$ndia dia trabajando") } else { println("$ndia dias trabajando") } ndia++ // Actualizamos la condicion } ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 53 2.1.5. Eventos, programación de eventos En Android, existe más de una forma de interceptar los eventos desde una interacción del usuario con tu aplicación. Al considerar los eventos dentro de tu interfaz de usuario, el enfoque consiste en capturar los eventos desde el objeto de vista específico con el que interactúa el usuario. Los eventos más comunes en las interfaces son las siguientes: En las interfaces de los receptores de eventos, se incluyen los siguientes métodos de devolución de llamada: 1. onClick() Desde View.OnClickListener. Se llama a este método cuando el usuario toca el elemento (en el modo táctil), o selecciona el elemento con las teclas de navegación o la bola de seguimiento y presiona la tecla Intro o la bola de seguimiento adecuada. 2. onLongClick() Desde View.OnLongClickListener. Se llama a este método cuando el usuario toca y mantiene presionado el elemento (en el modo táctil), o selecciona el elemento con las teclas de navegación o la bola de seguimiento y mantiene presionada la tecla Intro o la bola de seguimiento adecuada (durante un segundo). 3. onFocusChange() Desde View.OnFocusChangeListener. Se llama a este método cuando el usuario navega hacia el elemento o sale de él utilizando las teclas de navegación o la bola de seguimiento. 4. onKey() Desde View.OnKeyListener. Se llama a este método cuando el usuario se centra en el elemento y presiona o suelta una tecla física del dispositivo. 5. onTouch() Desde View.OnTouchListener. Se llama a este método cuando el usuario realiza una acción calificada como un evento táctil, por ejemplo, presionar, soltar o cualquier gesto de movimiento en la pantalla (dentro de los límites del elemento). 6. onCreateContextMenu() Desde View.OnCreateContextMenuListener. Se llama a este método cuando se crea un menú contextual (como resultado de un "clic largo" sostenido). Consulta la explicación sobre menús contextuales en la guía para desarrolladores Menús. Ejemplo del evento click activado para un botón de comando btnCalcular.setOnClickListener(View.OnClickListener { if (edtCosto!!.text.toString() == "" || edtCosto!!.text.toString() == "0") { Toast.makeText( baseContext, "El costo ingresado debe ser un valor numérico mayor a cero", Toast.LENGTH_LONG ).show() return@OnClickListener } } Control de flujo IF, if/Else y When El control de flujo en Kotlin se realiza mediante condicionales los cuales permiten controlar el flujo de nuestra aplicación, para ello tenemos los siguientes: IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 54 If, if/else Permite hacer una comparación lógica y luego según el resultado permite realizar una u otra acción Ejemplo: var costo = 0.0 var cantidad = 0.0 var total = 0.0 var Descuento = 0.0 costo = java.lang.Double.valueOf(edtCosto!!.text.toString()) cantidad = java.lang.Double.valueOf(edtCantidad!!.text.toString()) total = costo * cantidad if (total > 200 && total < 500) { Descuento = total * 0.05 } else if (total >= 500 && total < 1000) { Descuento = total * 0.10 } else if (total >= 1000) { Descuento = total * 0.12 } when Esta condicional es similar a swich o selección de casos permite según la condición realizar una acción. Ejemplo: var TipoSolicitud:Int=2 var DEscripcionSolicitud:String ="" when (TipoSolicitud) { 1->{ DEscripcionSolicitud = "Pedido" } 2->{ DEscripcionSolicitud = "Orden de Servicio" } } 2.1.6. Listas y adaptadores Que son las listas y los adaptadores Los controles de tipo lista permiten mostrar información en pantalla con datos que se pueden visualizar de diferentes formas para ello se valen de los adaptadores quienes contron los datos que se va a mostrar en los controles de tipo lista. Un adaptador es un objeto de una clase que implementa la interfaz Adapter. Este actúa como un enlace entre un conjunto de datos y un adaptador vista, un objeto de una clase que extiende a la clase abstracta AdapterView. El conjunto de datos puede ser cualquier cosa que presente datos en una manera estructurada. Arreglos, objetos List y objetos Cursor con usados, por lo general, con conjuntos de datos. Un adaptador es responsable por recuperar datos desde un conjunto de datos y para generar objetos View mediante esos datos. Los objetos View generados son usados, hasta entonces, para llenar cualquier adaptador vista que esté sujeto al adaptador. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 55 Es posible crear sus propias clases adaptadores desde cero, sin embargo, la mayoría de los desarrolladores elije usar o heredar las clases adaptadores proporcionadas por el Android SDK, tales como ArrayAdapter y SimpleCursorAdapter. En este tutorial, nos concentraremos en la clase ArrayAdapter. Ejemplo de adaptador en un recycledView Figura 59: Pantalla diseño Adaptador Fuente. – Tomado de https://code.tutsplus.com/ Controles avanzados de material design Material design Avanzado Los controles más avanzados de material design permiten diseñar controles enlazados a datos para ello en esta sección vamos a revisar los controles enlazados a datos. RecycledView Es una versión mejorada del listview, permite tener mejor manejo de los elementos en pantalla, se encuentra diseñado para mostrar grandes volúmenes de datos Figura 60: Vistas de recyledView Fuente. – Tomado de https://developer.android.com/guide/topics/ui/layout/recyclerview?hl=es IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 56 Los recycledView tiene como componente básico el CardView que permite diseñar cada uno de los elementos como podemos apreciar en el siguiente ejemplo Figura 61: Vistas de recyledView Fuente. – propia Que es una Adaptador Un adaptador de vista, como su nombre lo indica, es un objeto View. Esto significa, que usted puede añadirlo a su activities de la misma forma que usted añade cualquier otro complemento de la interfaz de usuario. Sin embargo, es incapaz de mostrar cualquier dato por su cuenta. Sus contenidos están siempre determinados por otro objeto, un adaptador. En este tutorial, le mostraré como crear adaptadores y usarlos para introducir diferentes tipos de adaptadores de vista tales como ListView y GridView, recycledView. Tipos de adaptador  BaseAdapter  ArrayAdapter  SimpleCursorAdapter  ListAdapter  SpinnerAdapter  CursorAdapter  SimpleAdapter Figura 62: Adaptadores Fuente. – propia ArrayAdapter Permite adaptar clases que permite adapter clases que representan tablas o listas de datos para ello es necesario crear una clase nueva implementando la clase ArrayAdapter. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 57 Figura 63: Ejemplo de ArrayAdapter Fuente. – propia BaseAdapter Permite adaptar los datos con el diseño de una forma simplificada, implementando los métodos básicos de un adaptador, los métodos básicos son los siguientes: getCount Total de elementos de la lista interna de datos getItem Recupera el objeto de la lista a partir del índice indicado. getItemId Permite recuperar el identificador de un objeto contenido en una lista para ello se debe indicar el indicel del elemento seleccionado. getView método más importante de la clase adaptador, permite vincular los datos con el diseño personalizado (ítem.xml). IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 58 Ejemplo de un adaptador enlazado ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 59 Como funciona un adaptador Figura 64: Funcionamiento de un adaptador Fuente. – propia La Clase ListView La clase que representa una lista vertical en el API de Android se llama ListView. Esta clase viene preparada para recibir los ítems que desplegará en la interfaz, facilitando al programador la implementación de sus características y comportamientos. Figura 65: Funcionamiento de un adaptador Fuente. – propia Si en algún momento los ítems que contiene dificultan la visualización total en la actividad de la aplicación, automáticamente implementará scrolling para que el usuario pueda desplegar los elementos ocultos. Estructuralmente un ListView contiene un View específico por cada fila. También se compone de un ScrollView, el cual permite generar el desplazamiento vertical por si se agota la pantalla para nuestros elementos. IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 60 Pasos para crear datos enlazados Diseño de elementos ítemregistro.xml Figura 66: Diseño de elementos para recycledView Fuente. – propia Contenido XML Crear el adaptador de datos Clase AdaptadorEmpresa Crear un Activity llamado ListadoEmpresas Figura 67: Diseño de elementos para recycledView Fuente. – propia IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 62 Código XML ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN IES CIBERTEC S.A.C. DESARRROLLO DE APLICACIONES MÓVILES I 63 Desarrollar el Código para enlazar los datos al Listview Figura 68: código para ListView Fuente. – propia La vista RecyclerView La vista RecyclerView visualiza una lista o cuadrícula deslizable de varios elementos, donde cada elemento puede definirse mediante un layout. Su utilización es algo compleja, pero muy potente. Un ejemplo lo podemos ver en la siguiente figura: Figura 69: código para ListView Fuente. – Tomado de http://www.androidcurso.com/index.php/691 Dentro del API de Android encontramos las vistas ListView y GridView nos ofrece una alternativa a RecyclerView. Esta última no ha sido añadida a ningún API si no que se añade en una librería de compatibilidad. A pesar de que resulta algo más compleja de manejar, recomendamos el uso de RecyclerView, en lugar de ListView o GridView, al ser más eficiente y flexible. Aunque su uso se describe con detalle en El Gran Libro de Android Avanzado, hacemos en este punto una introducción de sus funcionalidades básicas. Las principales ventajas que ofrece RecyclerView frente a ListView o GridView son: Reciclado de vistas (RecyclerView.ViewHolder) Distribución de vistas configurable (LayoutManager) Animaciones automáticas (ItemAnimator) Separadores de elementos (ItemDecoration) Trabaja juntamente con otros witgets introducidos en Material Design (CoordinationLayout) IES CIBERTEC S.A.C. ESCUELA DE TECNOLOGÍAS DE LA INFORMACIÓN DESARROLLO DE APLICACIONES MÓVILES I 64 Resumen 1. El lenguaje Kotlin simplifica la programación y esta optimizado para Android. 2. Las funciones y los métodos se crean de forma similar sin embargo solo están diferenciados porque la función tiene valor de retorno 3. El recycledView y el CardView son objetos de diseño independientes que permiten mostrar gran volumen de datos 4. Los adaptadores permiten cargar los datos y mostrarlo en un diseño de elementos 5. El lenguaje kotlin ofrece una programación simplificada, basada en programación orientado a objetos. 6. El evento más común a utilizado para programas es el evento click, sin embargo también tenemos otros eventos que se disparan en forma automática cuando se inicia la aplicación onCreate. 7. Los adaptadores permiten presentar datos en pantalla a partir del modelo además de controlar como se presentan los datos en pantalla para optimiza

Use Quizgecko on...
Browser
Browser