Ajustes Finales de UI y Experiencia de Usuario en Android

Clase 18 de 19Curso de Jetpack Compose en Android

Resumen

¿Cómo solucionar el problema de guardar la categoría en nuestra aplicación?

Muchas veces, al desarrollar una aplicación, pueden aparecer pequeños errores que afectan su funcionalidad general. En este caso, uno de esos errores es que nuestra aplicación no guarda correctamente la categoría de las tareas. El problema radica en el mapeo de nuestras clases task a taskentity, donde olvidamos incluir el campo referente a la categoría. Este problema se soluciona al introducir ese campo en la base de datos y realizar una conversión adecuada desde el ordinal.

Podemos seguir estos pasos:

  1. Asegurarnos de mapear correctamente el campo de categoría al configurar las clases.

  2. Utilizar el ordinal en la declaración del enum de la categoría para guardar su número correspondiente.

  3. Implementar una función fromOrdinal que permita la conversión desde el ordinal hacia la categoría deseada.

  4. Hacer los ajustes necesarios en nuestra base de datos, lo cual puede requerir limpiar el caché o desinstalar y reinstalar la aplicación para que los cambios surtan efecto.

    companyum object { fun fromOrdinal(ordinal: Int?): Category? { return enumValues().getOrNull(ordinal ?: return null) } }

¿Cómo mejorar la interfaz ante la aparición del teclado?

Un aspecto crucial para la experiencia de usuario es la manera en la que la interfaz se adapta cuando el teclado aparece. En dispositivos reales, el teclado suele redimensionar el espacio disponible, y nuestro diseño debe reflejar esto correctamente. Para lograr esta funcionalidad, podemos emplear el atributo adjustResize en la configuración de nuestra actividad Android. Este ajuste garantiza que los elementos de nuestra interfaz se muevan acorde al espacio que ocupa el teclado.

Actualiza el AndroidManifest.xml de esta manera:

 

Al implementar esto, asegura que el contenido se acomode de manera correcta al desaparecer o aparecer el teclado. Además, agrega imePadding al composable principal para que reaccione adecuadamente cuando el teclado se invoque.

¿Cómo manejar el foco y límites de texto en el campo de descripción?

Al editar un campo de texto con múltiples líneas, es importante manejar el foco y los límites para que la interfaz no se vea afectada negativamente. Debido a que el botón 'Guardar' puede desplazarse, debemos limitar el crecimiento del campo de texto. Podemos utilizar isDescriptionFocus para detectar cuándo el campo de descripción está activo y establecer límites máximo y mínimo de líneas.

if (isDescriptionFocus) {
    textFieldLimits = TextFieldLimits(multiline = true, minLines = 1, maxLines = 5)
} else {
    textFieldLimits = TextFieldLimits.Default
}

¿Cómo adecuar mensajes y estados en la aplicación?

Para mejorar la claridad y funcionalidad de la aplicación, es primordial ajustar los mensajes de los eventos importantes. Por ejemplo, al seleccionar 'borrar todo' del menú, es bueno mostrar un mensaje claro y relevante como 'all tasks deleted' en lugar de 'task updated'.

Modifica el homeScreenViewModel para reflejar cambios precisos:

fun onDeleteAllTasks() {
    // Cambiar mensaje de actualización al eliminar todas las tareas.
    postMessage("All tasks deleted")
}

Además, ajusta la visualización para no mostrar secciones innecesarias como 'pending' o 'completed' cuando no haya tareas pendientes. Implementa un estado vacío para mejorar la presentación general y garantizar un diseño más intuitivo y claro para el usuario.

Finalmente, reducir la longitud del nombre del día de la semana a tres letras ayuda a evitar que elementos visuales se traslapen innecesariamente.

Recuerda, siempre es posible continuar enriqueciendo tu aplicación, ya sea mediante la adición de nuevos colores, componentes o inclusive nuevas funcionalidades. No dejes de experimentar y aprender con cada ajuste que implementas. Cualquier reto es una nueva oportunidad de aprendizaje.