1. 程式人生 > 其它 >Jetpack Compose - Slider

Jetpack Compose - Slider

技術標籤:Jetpack-ComposeJetpackComposeSlider拖動條滑塊

Jetpack Compose - Slider

Compose系列文章,請點原文閱讀。原文,是時候學習Compose了!

0、介紹

拖動條,預設包含了一個滑塊和一個滑動軌道。其允許使用者在一個數值範圍內進行選擇。

1、屬性一覽

【目前基於alpha 11版本】請看該函式:

@Composable fun Slider(
    value: Float, 
    onValueChange: (Float) -> Unit, 
    modifier: Modifier = Modifier, 
    valueRange: ClosedFloatingPointRange<Float> = 0f..1f, 
    steps: Int = 0, 
    onValueChangeEnd: () -> Unit = {}, 
    interactionState: InteractionState = remember { InteractionState() }, 
    thumbColor: Color = MaterialTheme.colors.primary, 
    activeTrackColor: Color = MaterialTheme.colors.primary, 
    inactiveTrackColor: Color = activeTrackColor.copy(alpha = InactiveTrackColorAlpha), 
    activeTickColor: Color = MaterialTheme.colors.onPrimary.copy(alpha = TickColorAlpha), 
    inactiveTickColor: Color = activeTrackColor.copy(alpha = TickColorAlpha)
): Unit

屬性引數含義:

引數含義
modifier: Modifier = Modifier應用於佈局的修飾符
value: Float滑塊的當前值,如果設定的值超過滑塊可選值範圍,則會強制為可選範圍
onValueChange: (Float) -> Unit滑動滑塊時候的回調當前的值
valueRange: ClosedFloatingPointRange = 0f…1f滑塊可選值的範圍,預設0-1f
steps: Int = 0該值代表將拖動條均分為幾等份。如果為0,那麼是連續的值。如果是大於0,那麼可選值範圍會是指定的離散值(請見下文示例相關)
onValueChangeEnd: () -> Unit = {}滑塊值更改結束時候的回撥。注意該回調不是用來更新滑塊的進度的,而是使用者通過拖動或者點選滑塊完成選擇新的數值後才有的回撥
interactionState: InteractionState = remember { InteractionState() }自定義滑塊的屬性相關,可以參見Button自定義的相關內容
thumbColor: Color = MaterialTheme.colors.primary拖動條的滑塊的顏色
inactiveTrackColor: Color = activeTrackColor.copy(alpha = InactiveTrackColorAlpha)拖動條預設軌道的背景色
activeTrackColor: Color = MaterialTheme.colors.primary拖動條拖動滑塊後啟用部分軌道的顏色(請見下文示例)
inactiveTickColor: Color = activeTrackColor.copy(alpha = TickColorAlpha)設定了steps屬性後的離散值預設顏色(請見下文示例)
activeTickColor: Color = MaterialTheme.colors.onPrimary.copy(alpha = TickColorAlpha)設定了steps屬性後的啟用的離散值的顏色(請見下文示例)

2、使用示例

我們先來看下一個極簡的拖動條,程式碼如下:

@Composable
fun SliderDemo() {
    val progress = remember { mutableStateOf(0f) }

    Slider(
        value = progress.value,
        onValueChange = {
            progress.value = it
        },
    )
}

實現效果如下所示,所有的顏色是基於預設的主題色:

在這裡插入圖片描述
現在我們先設定下如下三個屬性,分別是紅、灰、藍:

thumbColor = myRed,
inactiveTrackColor = myGray,
activeTrackColor = myBlue,

請自行體會,對照上述屬性:

在這裡插入圖片描述
OK,現在繼續設定下steps屬性,還有另外兩個可以自定義的顏色值:

steps = 10,
inactiveTickColor = myYellow,
activeTickColor = Color.White

效果如下所示,請自行對照屬性理解:

在這裡插入圖片描述

3、版本更新

  • 暫無

4、未解決問題

以上只是實現了基本的拖動條功能,但是實際使用中UI設計可能完全不同,我們可以根據interactionState、自定義檢視等的功能去實現,具體使用我們在自定義檢視篇章中統一去處理。