Dispositivo di scorrimento

Il composable Slider consente agli utenti di effettuare selezioni da un intervallo di valori. Puoi utilizzare un dispositivo di scorrimento per consentire all'utente di:

  • Regola le impostazioni che utilizzano un intervallo di valori, ad esempio il volume e la luminosità.
  • Filtrare i dati in un grafico, ad esempio quando imposti una fascia di prezzo.
  • Input dell'utente, ad esempio l'impostazione di una valutazione in una recensione.

Il cursore contiene una traccia, un cursore, un'etichetta del valore e delle tacche:

  • Canale: il canale è la barra orizzontale che rappresenta l'intervallo di valori che può assumere il dispositivo di scorrimento.
  • Cursore: il cursore è un elemento di controllo trascinatile sul dispositivo di scorrimento che consente all'utente di selezionare un valore specifico nell'intervallo definito dalla barra.
  • Barre di misura: le barre di misura sono indicatori o indicatori visivi facoltativi che compaiono lungo la barra del cursore.
Un cursore con cursore, traccia e segni di graduazione.
Figura 1. Un'implementazione di un dispositivo di scorrimento.

Implementazione di base

Per una definizione completa dell'API, consulta il riferimento Slider. Ecco alcuni dei parametri chiave per il composable Slider:

  • value: il valore corrente del dispositivo di scorrimento.
  • onValueChange: una funzione lambda che viene chiamata ogni volta che il valore viene cambiato.
  • enabled: un valore booleano che indica se l'utente può interagire con il cursore.

L'esempio seguente è un dispositivo di scorrimento semplice. In questo modo l'utente può selezionare un valore compreso tra 0.0 e 1.0. Poiché l'utente può selezionare qualsiasi valore in questo intervallo, il dispositivo di scorrimento è continuo.

@Preview
@Composable
fun SliderMinimalExample() {
    var sliderPosition by remember { mutableFloatStateOf(0f) }
    Column {
        Slider(
            value = sliderPosition,
            onValueChange = { sliderPosition = it }
        )
        Text(text = sliderPosition.toString())
    }
}

Questa implementazione è visualizzata come segue:

Un componente cursore con un valore selezionato approssimativamente a tre quarti della barra.
Figura 2. Un'implementazione di base di un dispositivo di scorrimento.

Implementazione avanzata

Quando implementi un dispositivo di scorrimento più complesso, puoi utilizzare anche i seguenti parametri.

  • colors: un'istanza di SliderColors che consente di controllare i colori del cursore.
  • valueRange: l'intervallo di valori che può assumere il dispositivo di scorrimento.
  • steps: il numero di tacche sul cursore a cui si aggancia il pollice.

Il seguente snippet implementa un cursore con tre livelli, con un intervallo da 0.0 a 50.0. Poiché il cursore si aggancia a ogni livello, questo dispositivo di scorrimento è discreto.

@Preview
@Composable
fun SliderAdvancedExample() {
    var sliderPosition by remember { mutableFloatStateOf(0f) }
    Column {
        Slider(
            value = sliderPosition,
            onValueChange = { sliderPosition = it },
            colors = SliderDefaults.colors(
                thumbColor = MaterialTheme.colorScheme.secondary,
                activeTrackColor = MaterialTheme.colorScheme.secondary,
                inactiveTrackColor = MaterialTheme.colorScheme.secondaryContainer,
            ),
            steps = 3,
            valueRange = 0f..50f
        )
        Text(text = sliderPosition.toString())
    }
}

L'implementazione è la seguente:

Scrivi il testo alternativo qui
Figura 3. Un dispositivo di scorrimento con incrementi e un intervallo di valori impostato.

Dispositivo di scorrimento dell'intervallo

Puoi anche utilizzare il composable RangeSlider dedicato. In questo modo l'utente può selezionare due valori. Ciò può essere utile, ad esempio, quando l'utente vuole selezionare un prezzo minimo e massimo.

L'esempio seguente è un esempio relativamente semplice di un cursore con intervallo continuo.

@Preview
@Composable
fun RangeSliderExample() {
    var sliderPosition by remember { mutableStateOf(0f..100f) }
    Column {
        RangeSlider(
            value = sliderPosition,
            steps = 5,
            onValueChange = { range -> sliderPosition = range },
            valueRange = 0f..100f,
            onValueChangeFinished = {
                // launch some business logic update with the state you hold
                // viewModel.updateSelectedSliderValue(sliderPosition)
            },
        )
        Text(text = sliderPosition.toString())
    }
}

Un componente dispositivo di scorrimento dell'intervallo con due valori selezionati. Un'etichetta mostra i limiti superiore e inferiore della selezione.
Figura 4. Un'implementazione di un dispositivo di scorrimento dell'intervallo.

Risorse aggiuntive