슬라이더

Slider 컴포저블을 사용하면 사용자가 다양한 값 중에서 선택할 수 있습니다. 슬라이더를 사용하여 사용자가 다음을 수행하도록 허용할 수 있습니다.

  • 볼륨, 밝기와 같이 다양한 값을 사용하는 설정을 조정합니다.
  • 가격 범위를 설정할 때와 같이 그래프에서 데이터를 필터링합니다.
  • 사용자 입력(예: 리뷰에서 평점 설정)

슬라이더에는 트랙, 썸네일, 값 라벨, 눈금자가 포함됩니다.

  • 트랙: 트랙은 슬라이더가 취할 수 있는 값의 범위를 나타내는 가로 막대입니다.
  • 슬라이더 손잡이: 슬라이더 손잡이는 사용자가 트랙에서 정의된 범위 내에서 특정 값을 선택할 수 있는 슬라이더의 드래그 가능한 컨트롤 요소입니다.
  • 눈금: 눈금은 슬라이더의 트랙을 따라 표시되는 선택적 시각적 마커 또는 표시기입니다.
엄지, 트랙, 눈금이 있는 슬라이더
그림 1. 슬라이더 구현

기본 구현

전체 API 정의는 Slider 참조를 참고하세요. Slider 컴포저블의 주요 매개변수는 다음과 같습니다.

  • value: 슬라이더의 현재 값입니다.
  • onValueChange: 값이 변경될 때마다 호출되는 람다입니다.
  • enabled: 사용자가 슬라이더와 상호작용할 수 있는지를 나타내는 불리언 값입니다.

다음 예는 간단한 슬라이더입니다. 이를 통해 사용자는 0.0에서 1.0 사이의 값을 선택할 수 있습니다. 사용자가 이 범위에서 어떤 값이든 선택할 수 있으므로 슬라이더는 연속입니다.

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

이 구현은 다음과 같이 표시됩니다.

트랙의 약 3분의 2 지점에서 값이 선택된 슬라이더 구성요소
그림 2. 슬라이더의 기본 구현입니다.

고급 구현

더 복잡한 슬라이더를 구현할 때는 다음 매개변수를 추가로 사용할 수 있습니다.

  • colors: 슬라이더의 색상을 제어할 수 있는 SliderColors의 인스턴스입니다.
  • valueRange: 슬라이더가 취할 수 있는 값의 범위입니다.
  • steps: 엄지손가락이 걸리는 슬라이더의 노치 수입니다.

다음 스니펫은 범위가 0.0에서 50.0인 3단계 슬라이더를 구현합니다. 슬라이더 슬라브가 각 단계에 맞춰 고정되므로 이 슬라이더는 불연속입니다.

@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())
    }
}

구현은 다음과 같습니다.

여기에 대체 텍스트 입력
그림 3. 단계와 설정된 값 범위가 있는 슬라이더

범위 슬라이더

전용 RangeSlider 컴포저블을 사용할 수도 있습니다. 이렇게 하면 사용자가 두 개의 값을 선택할 수 있습니다. 이는 사용자가 최소 및 최대 가격을 선택하려는 경우와 같이 유용할 수 있습니다.

다음 예는 연속 범위 슬라이더의 비교적 간단한 예입니다.

@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())
    }
}

두 개의 값이 선택된 범위 슬라이더 구성요소 라벨은 선택의 상한 및 하한을 표시합니다.
그림 4. 범위 슬라이더 구현

추가 리소스