Jetpack:024-Jetpack中的滚动事件

文章目录

  • 1. 概念介绍
  • 2. 使用方法
    • 2.1 高级事件
    • 2.2 低级事件
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了Jetpack中事件相关的内容,本章回中主要 介绍事件中的滚动事件。闲话休提,让我们一起Talk Android Jetpack吧!

1. 概念介绍

我们在前面章回中介绍了Jetpack compose中的各种事件,不过这些事件主以点击事件为主,本章回中将介绍另外一种事件:滚动事件

我们在这里介绍的滚动事件是指对某个组件的发出的滚动事件,常用的场景是通过发出滚动事件让列表中的内容发生滚动。

2. 使用方法

滚动事件也分高级和低级,高级事件使用方便,不过缺少一些细节,低级事件相对高级事件更加强大一些,接下来我们将分别介绍这两种事件的使用方法。

2.1 高级事件

高级滚动事件使用verticalScrollhorizontalScroll修饰符表示,它们分别表示垂直和水平方向的滚动事件。在使用它们发出滚动事件时需要配合ScrollState这个状态值一起使用,我们将在后面的小节中通过示例代码来演示它的使用方法。

2.2 低级事件

低级滚动事件使用scrollable修饰符表示,它提供了名叫orientation的参数,通过该参数可以设置事件类型是垂直或者水平方向的滚动事件。在使用它发出滚动事件时需要配合ScrollableState这个状态值一起使用,我们将在后面的小节中通过示例代码来演示它的使用方法。

3. 示例代码

val scrollState = rememberScrollState()
    //指定滚动到的位置,这个值与滚动区域的大小有关,也就是代码中的120dp
    LaunchedEffect(Unit) { scrollState.animateScrollTo(60)}

    Column(
        modifier = Modifier
            .height(120.dp) //限定区域大小
            .background(color = Color.LightGray)
//                .verticalScroll(rememberScrollState())
            .verticalScroll(scrollState)
    ) {
       repeat(5) {
           Text(
               modifier = Modifier.padding(8.dp),
               text = "This is No: $it")
       }
    }

    //通过ScrollableState修饰符获取滚动的偏移值
    var scrollOffset by remember { mutableStateOf(0f)}
    Box(modifier = Modifier
        .height(80.dp)
        .scrollable(
            orientation = Orientation.Vertical,
            state = rememberScrollableState { consumeScrollDelta ->
                scrollOffset += consumeScrollDelta
                consumeScrollDelta
            }
        )
    ) { //在文本上显示滚动偏移值
        Text(text = if(scrollOffset == 0f) "ScrollableState"
            else scrollOffset.toString())
    }

上面的示例代码中演示了高级和低级滚动事件的用法,可以在高级事件的状态中指定滚动的初始位置,这样可以默认显示某个位置的内容。

我们在代码中创建了一个包含五个成员的列表,手指上下滑动时就发出了滚动事件,列表的内容会随之发生滚动。大家可以从下面的运行效果图中看到此效果。

低级事件的状态中包含有滚动事件的偏移值,当手指发生滑动时偏移值会发生变化,我们把偏移值显示在了与滚动事件绑定的Text上,不过该Text不会随着滚动事件的滚动而滚动,这是低级滚动事件与高级滚动事件最大的区别:滚动事件发生时内容不滚动。大家可以从下面的运行效果图中看到此效果。

Jetpack:024-Jetpack中的滚动事件_第1张图片

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • 滚动事件和之前介绍的点击事件类似也分高级和低级两种;
  • 高级滚动事件使用verticalScroll和horizontalScroll修饰符表示;
  • 低级滚动事件使用scrollable修饰符表示,事件的水平和垂直类型通过它的参数来指定;
  • 高级滚动事件和低级滚动事件都需要配合状态值才能使用,这是它们的相同点;
  • 高级滚动事件和低级滚动事件的不同点:内容在高级事件中随着滚动事件的滚动而滚动,在低级事件中不滚动;

看官们,与Jetpack中滚动事件相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

你可能感兴趣的:(一起Talk,AndroidJetPack吧,移动开发,Jetpack,compose,滚动事件)