Creación de Componentes UI en Jetpack Compose: Summary y Task Item
Clase 7 de 19 • Curso de Jetpack Compose en Android
Contenido del curso
- 6

Modelado de Tareas y Operaciones CRUD en Kotlin
18:48 - 7

Creación de Componentes UI en Jetpack Compose: Summary y Task Item
17:36 - 8

Creación de una Pantalla con Componentes en Jetpack Compose
23:17 - 9

Creación de un Arco de Progreso Animado en Compose
14:39 - 10

Gestión de Acciones y Estados en ViewModel de Android
23:14 - 11

Formateo y Ajustes Finales en Pantalla Home de To Do App
04:17 quiz de Composición de layouts en Jetpack Compose
¿Cómo crear componentes visuales en Compose?
Al desarrollar una aplicación con Compose, es vital estructurar de manera efectiva los componentes visuales, permitiendo una experiencia de usuario fluida y atractiva. Aquí te guiaré a través de los pasos para crear dos componentes funcionales: un resumen de tareas y un ítem de tareas dentro de una lista. Empezaremos a construir desde los elementos más simples para llegar a una interfaz funcional.
¿Cómo se implementa el componente Summary Info?
El componente Summary Info es crucial para mostrar la información resumida de las tareas, incluyendo fecha y estado de tareas completas e incompletas. Aquí te muestro cómo crear este Composable:
@Composable
fun SummaryInfo(modifier: Modifier) {
Column(
modifier = Modifier
.padding(16.dp)
) {
Text(
text = "24/05/2024", // Esto será dinámico
style = MaterialTheme.typography.headlineLarge,
color = MaterialTheme.colorScheme.onBackground,
fontWeight = FontWeight.Bold
)
Text(
text = "5 incompletas y 5 completas",
style = MaterialTheme.typography.titleSmall,
color = MaterialTheme.colorScheme.onSurface
)
}
}
Este componente se declara utilizando la anotación @Composable, y lo organizamos verticalmente utilizando la estructura Column, la cual permite alinear elementos de forma eficiente.
¿Cómo se trabaja con Row y Column en el ítem de tarea?
El componente TaskItem es un poco más complejo, ya que incorpora elementos clickeables e interactivos como un Checkbox. Aquí está su estructura:
@Composable
fun TaskItem(
modifier: Modifier,
task: Task,
onDelete: () -> Unit,
onToggle: (Boolean) -> Unit
) {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.background(MaterialTheme.colorScheme.surface)
.padding(horizontal = 8.dp)
.clickable { /* Acción al clicar */ }
) {
Checkbox(
checked = task.isCompleted,
onCheckedChange = { onToggle(it) }
)
Column(
modifier = Modifier
.padding(8.dp)
.weight(1f),
horizontalAlignment = Alignment.Start,
verticalArrangement = Arrangement.spacedBy(4.dp)
) {
Text(
text = task.title,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
style = MaterialTheme.typography.titleSmall,
fontWeight = FontWeight.Bold
)
Text(
text = task.description ?: "",
maxLines = 2,
overflow = TextOverflow.Ellipsis,
style = MaterialTheme.typography.bodySmall
)
}
Icon(
imageVector = Icons.Default.Delete,
contentDescription = "Eliminar",
tint = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.clickable { onDelete() }
)
}
}
Este código demuestra cómo combinar Row y Column para alinear los elementos de tarea de forma horizontal y vertical respectivamente. Estamos usando propiedades como alignment y arrangement para dar espacio y alineación adecuada a los componentes internos.
¿Cómo optimizar los componentes para la previsualización?
Para garantizar que los componentes se muestren correctamente durante el desarrollo, es importante habilitar la previsualización. Aquí te dejo el ejemplo de cómo hacerlo para el TaskItem:
@Preview(showBackground = true)
@Composable
fun TaskItemPreview() {
TaskItem(
task = Task(title = "Example Task", description = "Task description", isCompleted = false),
onDelete = {},
onToggle = {}
)
}
Este preview permite visualizar rápidamente en el entorno de desarrollo cómo se verá el componente en la aplicación final, asegurando que los colores y estilos estén acorde al tema aplicado.
Recomendaciones finales
Al crear estos componentes:
- Prueba diversas configuraciones de tamaño y color para encontrar la mejor combinación visual.
- Ajusta el padding y los pesos (
weight) para que los elementos se distribuyan de manera lógica y estética. - Explora las diferentes alineaciones y separaciones para hacer de la interfaz algo intuitivo y limpio.
Métete a fondo con Compose, experimenta con sus posibilidades y no olvides adaptar estos ejemplos a tus propias necesidades.