Generalidades

Uso de Kotlin + Android Jetpack para crear una grabadora de llamadas moderna: Capítulo 1 | Autor: Miki Mendelson | Agosto de 2021

  • Tradicionalmente, Android usa actividades y fragmentos para separar pantallas y transmisiones independientes. En Compose, las aplicaciones están diseñadas para ejecutarse en una arquitectura de actividad única.Esto facilita la introducción de flujos de navegación complejos. Redactar navegación, Toda la lógica de navegación es manejada por Compose runtime.
  • Esto también significa que las actividades estándar y los ciclos de vida de los fragmentos no son aplicables aquí. En cambio, Compose define diferentes efectos secundarios que pueden actuar como devoluciones de llamada del ciclo de vida. Más información aquí.

Modelo de datos: En los siguientes capítulos, usaremos la biblioteca de persistencia de Room para guardar y recuperar grabaciones de llamadas, pero ahora definiremos un modelo de datos simple para interactuar con la UI:

También proporcionaremos una forma sencilla de generar datos ficticios, solo con fines de visualización:

Puedes encontrar el completo CallRecording.kt El archivo está aquí.

Pantalla principal

Bien, prepárate primero, agreguemos algunas dependencias en nuestro nivel de aplicación build.gradle :

coreLibraryDesugaringEnabled con desugar_jdk_libs Necesita habilitar Java 8+ API (a través de desugar) sin un nivel mínimo de API de Android. Otras dependencias son para el soporte de Jetpack Compose, extensiones de Kotlin (core-ktx) Y biblioteca de apoyo.

Finalmente, agregue compose_version Variables de nivel superior build.gradle documento:

¡Por fin es hora de escribir nuestro primer Composable!Recuerde, en Redactar, los elementos de la interfaz de usuario son funciones anotadas @ComposableY gestiona tu estado local. Veamos cómo se verá nuestra lista de grabaciones:

Como antes, presentaremos cada componente aquí en detalle.

  1. RecordingList Lista recibida CallRecordingarena onClick El oyente manejará el evento de clic del elemento de la lista.
  2. Usamos uno LazyColumn Puede combinarse, equivalente a RecyclerView En el sistema de visualización de Android.esta LazyColumn Similar a Column Elementos, la principal diferencia es que los elementos de la primera lista de carga solo aparecen cuando aparecen en la pantalla.
  3. Dado que cargamos elementos en la pantalla de forma perezosa, LazyColumn No se aceptan bloques combinables.En cambio, define un DSL de alcance de lista diferida Esto nos permite describir cómo Crea elementos.En nuestro ejemplo, usamos itemsIndexed Método, recibe nuestra lista de elementos y envía los elementos combinados que conocen su índice en la lista. Si no está familiarizado con DSL en Kotlin, lea más aquí.
  4. Finalmente, nuestra lista también necesita recordar su estado de desplazamiento. recordar El elemento combinado siempre se puede reconstruir, por lo que si la lista no conoce su estado de desplazamiento final, cada nuevo dibujo del elemento combinado hará que la interfaz de usuario «salte» a la parte superior de la lista.Para esto usamos rememberLazyListState(), Crea un objeto de estado que podemos pasar a la lista diferida. Espero que discutamos los objetos de estado con más detalle en un capítulo posterior 🙂.

Ahora, definamos la apariencia de un solo elemento de grabación en la lista, nuestro RecordingItem Puede combinarse:

Bien, veamos lo que sucedió aquí en detalle nuevamente:

  1. Modificador: Los modificadores son una forma muy conveniente de agregar un comportamiento adicional a los elementos de la interfaz de usuario de Compose. ¿Qué es comportamiento extra? Bueno, puede ser el tamaño, la forma, la semántica, el borde (relleno) y el movimiento del elemento. También se puede usar para agregar diferentes interacciones de usuario, como presionar, enfocar, etc. Lea sobre esto y vea la lista completa de modificadores disponibles aquí.
    También vale la pena señalar que la interfaz Modifier es fluidoSi no está familiarizado con este concepto, no se preocupe, significa que la interfaz admite cadenas de métodos, porque cada método devuelve la instancia que lo llamó (this).
    Por ejemplo, considere el modificador que le damos al nivel superior Card elemento: Modifier.fillMaxWidth().clickable(onClick = onClick) . Este modificador significa «hacer que este elemento ocupe el ancho máximo de la pantalla y hacer que se pueda hacer clic en él onClick Actuar como un oyente de clics «.
  2. elemento: Aquí usamos Card Elementos de la biblioteca Compose Material, nos proporciona una tarjeta de Material Design.También utilizamos autoexplicativos Row Disposición horizontal de elementos Box con Column. esta Box El elemento contiene un icono que indica el tipo de llamada grabada y Column Enumere alguna información de texto (el número de teléfono / nombre del contacto asociado con la llamada y la duración de la grabación). También definimos algunos métodos de extensión para hacer que el código sea más legible y detallado. Usted puede encontrarlos aquí.
  3. Tematización: esta style Atributos pasados ​​a Text El elemento nos permite controlar la apariencia del texto. MaterialTheme Almacena temas de toda la aplicación y nos da acceso a estilos de diseño, tipografía y color. Más información aquí. Por ahora, no discutiremos demasiado el tema, pero exploraremos el tema en profundidad en el próximo capítulo, ¡cuando volvamos a visitar nuestra aplicación!

Vista previa de la interfaz de usuario: Ahora que hemos completado principalmente la parte principal de la interfaz de usuario, queremos obtener una vista previa de la apariencia de nuestro componente hasta ahora.Afortunadamente, Compose nos proporciona opciones listas para usar @Preview ¡anotación!

Al definir el componente de vista previa, definimos un @Composable Función sin parámetros. Por lo tanto, todos los parámetros iniciales deben conocerse de antemano.Podemos obtener una vista previa de nuestro RecordingItem Cree un elemento pasando una grabación virtual usando la función que creamos anteriormente:

Cree el proyecto y vea la pantalla de diseño en Android Studio, deberíamos obtener lo siguiente:

¡se ve muy bien! Unámoslo todo reescribiendo la actividad principal:

Agregamos un TopBar Mostrar solo el elemento del título, hemos inicializado nuestro RecordingList Hay 100 grabaciones virtuales. Cuando se presiona el elemento de registro, mostraremos una barra de refrigerio de verificación de cordura.Nuestro diseño encapsula un Surface, Responsable de aplicar el color de fondo a la aplicación, Scaffold , Que maneja la apariencia estructurada de las páginas de Material Design, y RecordioTheme ,Esto es un MaterialTheme Generado por AndroidStudio para nuestra aplicación. Discutiremos esto en profundidad en los siguientes capítulos.

Finalmente, ejecutamos la aplicación y primero miramos nuestra creación:

LEER  Todo lo relacionado con la tecnología AR ingresa al mundo del desarrollo de aplicaciones móviles

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba