Android Jetpack Compose - Switch(切换)、Slider(滑块)、RangeSlider(范围滑块)

一、Switch(切换)

1、基本介绍
kotlin 复制代码
fun Switch(
    checked: Boolean,
    onCheckedChange: ((Boolean) -> Unit)?,
    modifier: Modifier = Modifier,
    thumbContent: (@Composable () -> Unit)? = null,
    enabled: Boolean = true,
    colors: SwitchColors = SwitchDefaults.colors(),
    interactionSource: MutableInteractionSource? = null,
) {}
参数 说明
checked 当前开关状态
onCheckedChange 状态变化时的回调
modifier 布局修饰符
thumbContent 自定义滑块内容
enabled 是否启用
colors 自定义颜色,通过 SwitchDefaults.colors() 配置
interactionSource 自定义交互状态反馈
2、演示
kotlin 复制代码
var checked by remember { mutableStateOf(true) }

Box(
    modifier = Modifier.fillMaxSize()
) {
    Switch(
        modifier = Modifier.align(Alignment.Center),
        checked = checked,
        onCheckedChange = {
            checked = it
        }
    )
}
kotlin 复制代码
var checked by remember { mutableStateOf(true) }

Box(
    modifier = Modifier.fillMaxSize()
) {
    Switch(
        modifier = Modifier.align(Alignment.Center),
        checked = checked,
        onCheckedChange = {
            checked = it
        },
        thumbContent = if (checked) {
            {
                Icon(
                    imageVector = Icons.Filled.Check,
                    contentDescription = null,
                    modifier = Modifier.size(SwitchDefaults.IconSize),
                )
            }
        } else {
            null
        }
    )
}
kotlin 复制代码
var checked by remember { mutableStateOf(true) }

Box(
    modifier = Modifier.fillMaxSize()
) {
    Switch(
        modifier = Modifier.align(Alignment.Center),
        checked = checked,
        onCheckedChange = {
            checked = it
        },
        colors = SwitchDefaults.colors(
            checkedThumbColor = MaterialTheme.colorScheme.primary,
            checkedTrackColor = MaterialTheme.colorScheme.primaryContainer,
            uncheckedThumbColor = MaterialTheme.colorScheme.secondary,
            uncheckedTrackColor = MaterialTheme.colorScheme.secondaryContainer,
        )
    )
}

二、Slider(滑块)

1、基本介绍
kotlin 复制代码
fun Slider(
    value: Float,
    onValueChange: (Float) -> Unit,
    modifier: Modifier = Modifier,
    enabled: Boolean = true,
    valueRange: ClosedFloatingPointRange<Float> = 0f..1f,
    @IntRange(from = 0) steps: Int = 0,
    onValueChangeFinished: (() -> Unit)? = null,
    colors: SliderColors = SliderDefaults.colors(),
    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }
) {}
参数 说明
value 当前滑块的值
onValueChange 值变化时的回调
modifier 布局修饰符
enabled 是否启用
valueRange 值范围
steps steps = 0(默认):滑块在 valueRange 内连续滑动 steps = 3:将范围分成 4 个等距档位,档位数 = steps + 1
onValueChangeFinished 松开手指结束滑动时的回调
colors 自定义颜色,通过 SliderDefaults.colors() 配置
interactionSource 自定义交互状态反馈
2、演示
kotlin 复制代码
var sliderPosition by remember { mutableFloatStateOf(0f) }

Column(
    modifier = Modifier
        .fillMaxSize()
        .padding(16.dp),
    horizontalAlignment = Alignment.CenterHorizontally,
    verticalArrangement = Arrangement.Center
) {
    Slider(
        value = sliderPosition,
        onValueChange = { sliderPosition = it }
    )
    Text(text = sliderPosition.toString())
}
kotlin 复制代码
var sliderPosition by remember { mutableFloatStateOf(0f) }

Column(
    modifier = Modifier
        .fillMaxSize()
        .padding(16.dp),
    horizontalAlignment = Alignment.CenterHorizontally,
    verticalArrangement = Arrangement.Center
) {
    Slider(
        value = sliderPosition,
        onValueChange = { sliderPosition = it },
        colors = SliderDefaults.colors(
            thumbColor = MaterialTheme.colorScheme.secondary,
            activeTrackColor = MaterialTheme.colorScheme.secondary,
            inactiveTrackColor = MaterialTheme.colorScheme.secondaryContainer,
        ),
        steps = 3,
    )
    Text(text = sliderPosition.toString())
}
kotlin 复制代码
var sliderPosition by remember { mutableFloatStateOf(0f) }

Column(
    modifier = Modifier
        .fillMaxSize()
        .padding(16.dp),
    horizontalAlignment = Alignment.CenterHorizontally,
    verticalArrangement = Arrangement.Center
) {
    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())
}

三、RangeSlider(范围滑块)

1、基本介绍
kotlin 复制代码
fun RangeSlider(
    value: ClosedFloatingPointRange<Float>,
    onValueChange: (ClosedFloatingPointRange<Float>) -> Unit,
    modifier: Modifier = Modifier,
    enabled: Boolean = true,
    valueRange: ClosedFloatingPointRange<Float> = 0f..1f,
    @IntRange(from = 0) steps: Int = 0,
    onValueChangeFinished: (() -> Unit)? = null,
    colors: SliderColors = SliderDefaults.colors()
) {}
参数 说明
value 当前滑块的值
onValueChange 值变化时的回调
modifier 布局修饰符
enabled 是否启用
valueRange 值范围
steps steps = 0(默认):滑块在 valueRange 内连续滑动 steps = 3:将范围分成 4 个等距档位,档位数 = steps + 1
onValueChangeFinished 松开手指结束滑动时的回调
colors 自定义颜色,通过 SliderDefaults.colors() 配置
2、演示
kotlin 复制代码
var sliderPosition by remember { mutableStateOf(0f..100f) }

Column(
    modifier = Modifier
        .fillMaxSize()
        .padding(16.dp),
    horizontalAlignment = Alignment.CenterHorizontally,
    verticalArrangement = Arrangement.Center
) {
    RangeSlider(
        value = sliderPosition,
        onValueChange = { sliderPosition = it },
        onValueChangeFinished = {
            Log.i(TAG, "松开手指结束滑动了")
        },
        valueRange = 0f..100f
    )
    Text(sliderPosition.start.toString() + " - " + sliderPosition.endInclusive.toString())
}
kotlin 复制代码
var sliderPosition by remember { mutableStateOf(0f..100f) }

Column(
    modifier = Modifier
        .fillMaxSize()
        .padding(16.dp),
    horizontalAlignment = Alignment.CenterHorizontally,
    verticalArrangement = Arrangement.Center
) {
    RangeSlider(
        value = sliderPosition,
        onValueChange = { sliderPosition = it },
        valueRange = 0f..100f,
        steps = 3,
    )
    Text(sliderPosition.start.toString() + " - " + sliderPosition.endInclusive.toString())
}
相关推荐
majingming1237 小时前
FUNCTION
java·前端·javascript
zopple7 小时前
常见的 Spring 项目目录结构
java·后端·spring
流星白龙8 小时前
【MySQL】7.MySQL基本查询(2)
android·mysql·adb
xuxie999 小时前
N11 ARM-irq
java·开发语言
cjy0001119 小时前
springboot的 nacos 配置获取不到导致启动失败及日志不输出问题
java·spring boot·后端
mldlds9 小时前
MySQL加减间隔时间函数DATE_ADD和DATE_SUB的详解
android·数据库·mysql
wefly20179 小时前
从使用到原理,深度解析m3u8live.cn—— 基于 HLS.js 的 M3U8 在线播放器实现
java·开发语言·前端·javascript·ecmascript·php·m3u8
zhenxin01229 小时前
Spring Boot实现定时任务
java
小江的记录本10 小时前
【事务】Spring Framework核心——事务管理:ACID特性、隔离级别、传播行为、@Transactional底层原理、失效场景
java·数据库·分布式·后端·sql·spring·面试
sheji341610 小时前
【开题答辩全过程】以 基于springboot的校园失物招领系统为例,包含答辩的问题和答案
java·spring boot·后端