Jetpack Compose - Slider

Posted 乐翁龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jetpack Compose - Slider相关的知识,希望对你有一定的参考价值。

Jetpack Compose - Slider

Compose系列文章,请点原文阅读。原文,是时候学习Compose了!

0、介绍

拖动条,默认包含了一个滑块和一个滑动轨道。其允许用户在一个数值范围内进行选择。

1、属性一览

【目前基于beta01版本】请看该函数:

@Composable fun Slider(
    value: Float, 
    onValueChange: (Float) -> Unit, 
    modifier: Modifier = Modifier, 
    enabled: Boolean = true, 
    valueRange: ClosedFloatingPointRange<Float> = 0f..1f, 
    steps: Int = 0, 
    onValueChangeFinished: () -> Unit = null, 
    interactionSource: MutableInteractionSource = remember  MutableInteractionSource() , 
    colors: SliderColors = SliderDefaults.colors()
): Unit

属性参数含义:

参数含义
modifier: Modifier = Modifier应用于布局的修饰符
value: Float滑块的当前值,如果设置的值超过滑块可选值范围,则会强制为可选范围
onValueChange: (Float) -> Unit滑动滑块时候的回调当前的值
valueRange: ClosedFloatingPointRange = 0f…1f滑块可选值的范围,默认0-1f
steps: Int = 0该值代表将拖动条均分为几等份。如果为0,那么是连续的值。如果是大于0,那么可选值范围会是指定的离散值(请见下文示例相关)
onValueChangeFinished: () -> Unit = null滑块值更改结束时候的回调。注意该回调不是用来更新滑块的进度的,而是用户通过拖动或者点击滑块完成选择新的数值后才有的回调
interactionSource: MutableInteractionSource = remember MutableInteractionSource() 自定义滑块的属性相关,可以参见Button自定义的相关内容
colors: SliderColors = SliderDefaults.colors()拖动条各种状态滑块和轨道的颜色设置(具体请看下文属性)
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、版本更新

  • beta01
    在该版本中对于各种颜色的定义统一放在了SliderDefaults.colors中,请自行修改。

4、未解决问题

以上只是实现了基本的拖动条功能,但是实际使用中UI设计可能完全不同,我们可以根据interactionState、自定义视图等的功能去实现,具体使用我们在自定义视图篇章中统一去处理。

以上是关于Jetpack Compose - Slider的主要内容,如果未能解决你的问题,请参考以下文章

Android Jetpack Compose学习—— Jetpack compose基础布局

Android Jetpack Compose学习—— Jetpack compose基础布局

jetpack compose 接收返回参数

什么是Jetpack Compose?带你走进Jetpack Compose~

如何判断 jetpack-compose 分页是不是有效?

Jetpack Compose | 控件篇 -- SwitchCheckBoxRadioButton