Jetpack Compose之选择器

这篇具有很好参考价值的文章主要介绍了Jetpack Compose之选择器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

选择器是啥

选择器主要是指Checkbox复选框,单选开关Switch,滑杆组件Slider等用于提供给用户选择一些值和程序交互的组件,比如像复选框Checkbox,可以让用户选择一个或者多个选项,它可以将一个选项打开或者是关闭,通常用来做线上调查问卷或者是模拟考试的场景程序中,再比如滑杆组件可以用来作为调节音量和亮度的数值调整,或者是做进度条。

实例解析

1.Checkbox复选框

Checkbox允许用户从一个集合中选择一个或者多个选项,而且它可以将一个选项打开或者是关闭,下列是Checkbox的参数列表

@Composable
fun Checkbox(
    checked: Boolean, // 是否被选中
    onCheckedChange: ((Boolean) -> Unit)?, // 当复选框被点击时的回调
    modifier: Modifier = Modifier,
    enabled: Boolean = true, // 是否启用复选框
    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
    colors: CheckboxColors = CheckboxDefaults.colors() // 复选框的演示组
) 

我们可以通过下面的代码了解Checkbox的使用方法

  @Composable
    fun CheckBoxDemo()
    {
        val checkedState = remember {
            mutableStateOf(true)
        }

        Checkbox(checked = checkedState.value, onCheckedChange = {
            checkedState.value = it
        },
        colors = CheckboxDefaults.colors(checkedColor = Color(0xFF0079D3)))
    }

运行结果:
Jetpack Compose之选择器

2.TriStateCheckbox 三状态选择框

当我们的复选框有很多个的时候,往往希望能够统一选择或者时取消,这种场景下我们就可以使用TriStateCheckbox ,代码如下:

    @Composable
    fun TriStateCheckBoxDemo()
    {
        val(state,onStateChange) = remember {
            mutableStateOf(true)
        }

        val(state2,onStateChange2) = remember {
            mutableStateOf(true)
        }

        val parentState = remember(state, state2) {
            if(state && state2) ToggleableState.On
            else if(!state && !state2) ToggleableState.Off
            else ToggleableState.Indeterminate
        }

        val onParentClick = {
            val s = parentState != ToggleableState.On
            onStateChange(s)
            onStateChange2(s)
        }

        Column(modifier = Modifier.padding(10.dp,0.dp,0.dp,0.dp)) {
            TriStateCheckbox(state = parentState, onClick = onParentClick,
                colors = CheckboxDefaults.colors(checkedColor = MaterialTheme.colors.primary)
            )
            Checkbox(checked = state, onCheckedChange = onStateChange)
            Checkbox(checked = state2, onCheckedChange = onStateChange2)
        }
    }

运行结果如下。
Jetpack Compose之选择器
Jetpack Compose之选择器
Jetpack Compose之选择器

当复选框全选中时,TriStateCheckbox显示已完成的状态,而如果只有部分复选框被选中时,TriStateCheckbox则显示不确定状态,当我们在这个时候点击它时,则会将剩余没有选中的复选框设置为选中状态,当我们去掉所有选中状态时,TriStateCheckbox的状态也被置成了未选中的状态。

3.Switch单选开关

Switch组件可以控制单个项关闭或者是开启,参数列表如下

@Composable
@OptIn(ExperimentalMaterialApi::class)
fun Switch(
    checked: Boolean, // 开关的状态
    onCheckedChange: ((Boolean) -> Unit)?, 点击开关的回调,会获得最新的开关状态
    modifier: Modifier = Modifier,
    enabled: Boolean = true, // 是否启用
    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
    colors: SwitchColors = SwitchDefaults.colors() // 开关组的颜色。
) 

Switch组件的使用也特别简单,代码如下:

  @Composable
    fun SwitchDemo()
    {
        val checkedState = remember {
            mutableStateOf(true)
        }

        Switch(checked = checkedState.value, onCheckedChange = {
            checkedState.value = it
        })
    }

运行结果:
Jetpack Compose之选择器

4.Slider滑杆组件

slider组件类似于传统视图的SeekBar,可以用来做音量,亮度之类的数值调整或者是进度条,我们先看看它的参数列表

@Composable
fun Slider(
    value: Float, // 进度值
    onValueChange: (Float) -> Unit, // 进度改变的监听
    modifier: Modifier = Modifier, // 修饰符
    enabled: Boolean = true,
    valueRange: ClosedFloatingPointRange<Float> = 0f..1f, // 进度值的范围默认是0到1
    /*@IntRange(from = 0)*/
    steps: Int = 0,
    onValueChangeFinished: (() -> Unit)? = null,
    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
    colors: SliderColors = SliderDefaults.colors() // 滑杆颜色设置,默认值是SliderDefaults.colors
)

其中,colors参数是用于设置滑杆各部位的颜色。滑杆组件中可设置颜色的区域很多,例如滑杆小圆球的颜色,滑杆进度条颜色,滑杆底色等,step参数将进度条平分为(step+1) 段,比如当分成两段时,进度条在第一段之间拉动,超过第一段的一半就自动到第一段,没超过就退回到原来的位置,Sliderbar的使用代码如下。

    @Composable
    fun SliderDemo()
    {
        var sliderPosition by remember {
            mutableStateOf(0f)
        }

        Text(text = "%.1f".format(sliderPosition*100) + "%")
        Slider(value = sliderPosition, onValueChange = {sliderPosition = it})
    }

运行结果如下
Jetpack Compose之选择器

总结

本文主要介绍了复选框,三状态选择框,单选开关和滑杆组件,读者应该自己手敲一遍,记忆会更加牢靠。在写测试demo的时候,建议读者也尽量使用这些组件,一是可以熟悉他们的使用,二是让自己写的demo更加与众不同文章来源地址https://www.toymoban.com/news/detail-410365.html

到了这里,关于Jetpack Compose之选择器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jetpack Compose 学习汇总

    关于 Jetpack Compose 的学习本想只是简单的快速学习一下,结果万万没想到,竟然一下子折腾了好几个月。。。 下面将之前记录的 Jetpack Compose 相关的学习博文进行一个汇总链接整理,方便我以后自己查阅,也希望能帮到一些有正在学习 Compose 的道友。 Jetpack Compose 中的基础组件

    2024年02月12日
    浏览(39)
  • Jetpack Compose(4)——重组

    目录 一、状态变化 1.1 状态变化是什么 1.2 mutableStateListOf 和 mutableStateMapOf 二、重组的特性 2.1 Composable 重组是智能的 2.2 Composable 会以任意顺序执行 2.3 Composable 会并发执行 2.4 Composable 会反复执行 2.5 Composable 的执行是“乐观”的 三、重组范围 四、参数类型的稳定性 4.1 稳定和不

    2024年04月08日
    浏览(38)
  • Jetpack Compose中的动画

    Jetpack Compose中没有沿用Android原有的View动画和属性动画,而是新创建了一套全新的动画系统API,这是理所当然的,因为旧的动画系统主要是基于View体系的,而Compose中需要针对的是Composable可组合函数进行处理,那么势必要创造一套新的玩具出来,同时,这也无疑增加了开发者

    2024年02月08日
    浏览(44)
  • Android Jetpack Compose 别裁

    一、简介 二、compose优缺点 三、compose好学吗 四、Android Jetpack Compose 跟 fluter 哪个更好 五、Android Jetpack Compose 跟 fluter 技能学习选择 之所以叫Android Jetpack Compose别裁是希望能取舍网上的对compose的资料,推出别出心裁的文章,文章结束都会有一个案例,通过实践学习,让学习的

    2024年02月03日
    浏览(63)
  • Jetpack compose实现MVI

    MVI(Model-View-Intent)是一种前端架构模式,其目标是使状态管理更具可预测性,便于开发和调试。它将应用程序视为一个函数,该函数接受一系列的意图(Intent)作为输入,然后返回一个新的状态作为输出。在 Jetpack Compose 中,你可以使用 Kotlin Flow 和 State 来实现 MVI。 下面是

    2024年02月16日
    浏览(28)
  • Jetpack Compose中的Accompanist

    accompanist是Jetpack Compose官方提供的一个辅助工具库,以提供那些在Jetpack Compose sdk中目前还没有的功能API。 权限 依赖配置: 单个权限申请 例如,我们需要获取相机权限,可以通过 rememberPermissionState(Manifest.permission.CAMERA) 创建一个 PermissionState 对象,然后通过 PermissionState.statu

    2024年02月03日
    浏览(36)
  • Jetpack Compose(3) —— 状态管理

    上一篇文章拿 TextField 组件举例时,提到了 State ,即状态。本篇文章,即讲解 State 的相关改概念。 与其它声明式 UI 框架一样,Compose 的职责非常单纯,仅作为对数据状态的反应。如果数据状态没有改变,则 UI 永远不会自行改变。在 Compose 中,每一个组件都是一个被 @Composa

    2024年03月13日
    浏览(43)
  • Jetpack Compose UI架构

    Jetpack Compose是我职业生涯中最激动人心的事。它改变了我工作和问题思考的方式,引入了易用且灵活的工具,几乎可轻松实现各种功能。 早期在生产项目中尝试了Jetpack Compose后,我迅速着迷。尽管我已有使用Compose创建UI的经验,但对新的Jetpack Compose驱动特性的组织和架构引发

    2024年02月11日
    浏览(50)
  • Jetpack Compose: Hello Android

    Jetpack Compose 是一个现代化的工具包,用于使用声明式方法构建原生 Android UI。在本博文中,我们将深入了解一个基本的 “Hello Android” 示例,以帮助您开始使用 Jetpack Compose。我们将探讨所提供代码片段中使用的函数和注解。 在深入代码之前,请确保您已经准备好使用 Jetpac

    2024年03月10日
    浏览(56)
  • 动脑学院Jetpack Compose学习笔记

    最近b站学习了一下Compose相关内容,整理了相关笔记,仅供大家参考。  资源链接如下,象征性收取1个积分 https://download.csdn.net/download/juliantem/88125198

    2024年02月15日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包