Jetpack Compose之选择器使用实例讲解

 更新时间:2023年04月17日 09:38:18   作者:海塔灯  
这篇文章主要介绍了Jetpack Compose之选择器使用,选择器主要是指Checkbox复选框,单选开关Switch,滑杆组件Slider等用于提供给用户选择一些值和程序交互的组件,比如像复选框Checkbox,可以让用户选择一个或者多个选项

选择器是啥

选择器主要是指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)))
    }

运行结果:

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

运行结果如下。

当复选框全选中时,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
        })
    }

运行结果:

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

运行结果如下

总结

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

到此这篇关于Jetpack Compose之选择器使用实例讲解的文章就介绍到这了,更多相关Jetpack Compose选择器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android ViewPager实现无限循环轮播广告位Banner效果

    Android ViewPager实现无限循环轮播广告位Banner效果

    这篇文章主要为大家详细介绍了Android ViewPager实现无限循环轮播广告位Banner效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Github简单易用的 Android ViewModel Retrofit框架

    Github简单易用的 Android ViewModel Retrofit框架

    这篇文章主要介绍了Github简单易用的Android ViewModel Retrofit框架,RequestViewMode有自动对LiveData进行缓存管理,每个retrofit api接口复用一个livedata的优势。下文具体详情,感兴趣的小伙伴可以参考一下
    2022-06-06
  • Android基于OpenCV实现图像脱色

    Android基于OpenCV实现图像脱色

    脱色是将彩色图像转换为灰度图像的过程。同时,它也是数字打印,风格化的黑白照片渲染以及许多单通道图像处理应用程序中的基本工具。本文讲述基于OpenCV实现图像脱色的步骤
    2021-06-06
  • Android 利用OpenCV制作人脸检测APP

    Android 利用OpenCV制作人脸检测APP

    本篇文章手把手教大家使用OpenCV来实现一个能在安卓手机上运行的人脸检测APP。其实不仅仅是能检测人脸,还能检测鼻子,嘴巴,眼睛和耳朵。需要的朋友可以参考一下
    2021-12-12
  • Android中WebView加载网页设置进度条

    Android中WebView加载网页设置进度条

    这篇文章主要为大家详细介绍了Android中WebView加载网页设置进度条的相关代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Android仿微信朋友圈全文收起功能示例(附源码)

    Android仿微信朋友圈全文收起功能示例(附源码)

    本篇文章主要介绍了Android仿微信朋友圈全文收起功能示例(附源码),非常具有实用价值,需要的朋友可以参考下。
    2017-02-02
  • Android模拟器实现手机添加文件到sd卡的方法

    Android模拟器实现手机添加文件到sd卡的方法

    这篇文章主要介绍了Android模拟器实现手机添加文件到sd卡的方法,详细分析了Android模拟器添加文件到sd卡的步骤与相关技巧,需要的朋友可以参考下
    2016-06-06
  • Android实现GridView中的item自由拖动效果

    Android实现GridView中的item自由拖动效果

    在前一个项目中,实现了一个功能是gridview中的item自由拖到效果,实现思路很简单,主要工作就是交换节点,以及拖动时的移动效果,下面小编给大家分享具体实现过程,对gridview实现拖拽效果感兴趣的朋友一起看看吧
    2016-11-11
  • Android实现3D标签云效果

    Android实现3D标签云效果

    这篇文章主要为大家详细介绍了Android实现3D标签云效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 解决django 多个APP时 static文件的问题

    解决django 多个APP时 static文件的问题

    这篇文章主要介绍了解决django 多个APP时 static文件的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03

最新评论