En el post de hoy creamos un RangeSlider( control deslizante de rango) en Android con Jetpack Compose.

Un RangeSlider permite al usuario seleccionar 2 valores dentro de un rango determinado. Este componente está formado por una barra horizontal que representa el rango de valores, controles deslizantes de selección y marcadores opcionales que aparecen a lo largo de la barra.

Parámetros del RangeSlider

RangeSlider

Un RangeSlider acepta varios parámetros. Algunos de los principales son:

  • value: los valores actuales del elemento.
  • steps: las muescas distribuidas a lo largo de la barra.
  • valueRange: los valores que acepta el control deslizante.
  • onValueChange: la expresión lambda que es llamada cada vez que movemos los controles.

Creando un RangeSlider en Android

Abrimos Android Studio y creamos un nuevo proyecto con la plantilla actividad vacía de Jetpack Compose.

Crear activity vacía

A continuación damos un nombre a la aplicación, clic en finalizar y deberíamos tener un activity de ejemplo de Jetpack Compose.

En nuestra activity creamos una función composable a la que llamamos AndroidRangeSlider.

@Composable
fun AndroidRangeSlider(modifier: Modifier) {
    var sliderPosition by remember { mutableStateOf(0f..10f) }
    Column(
        horizontalAlignment = Alignment.CenterHorizontally,
        verticalArrangement = Arrangement.Center,
        modifier = Modifier.fillMaxSize(),
    ) {

        Text(text = "Left: ${sliderPosition.start} Right: ${sliderPosition.endInclusive}")

        RangeSlider(
            value = sliderPosition,
            steps = 10,
            valueRange = 0f..10f,
            onValueChange = { range -> sliderPosition = range },
            modifier = Modifier.padding(20.dp)
        )
    }
}

La anterior función contiene un RangeSlider y un Text organizados con la ayuda de un Column.

Los valores del slider son guardados en la variable sliderPosition. Declaramos esta variable con la palabra clave remember. De este modo recordamos su valor durante las recomposiciones.

En el Text mostramos la información seleccionada por los controles deslizantes.

Cómo funciona RangeSlider

Cada vez que movemos los controles por la barra deslizante se actualizan los datos del RangeSlider mediante la expresión lambda: {range -> sliderPosition = range}.

Actualizar onCreate

Sólo nos queda llamar a la función AndroidRangeSlider desde el método onCreate de la MainActivity. Borramos el código del Scaffold y añadimos el siguiente:

Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
                    AndroidRangeSlider(
                        modifier = Modifier.padding(innerPadding)
                    )
                }

Si instalamos la app en un emulador Android deberíamos ver un RangeSlider funcional como el de la siguiente imagen:

RangeSlider Android


0 comentarios

Deja una respuesta

Marcador de posición del avatar

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

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies