Jetpack:024-Jetpack中的滚动事件

news2024/11/19 7:27:12

文章目录

  • 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不会随着滚动事件的滚动而滚动,这是低级滚动事件与高级滚动事件最大的区别:滚动事件发生时内容不滚动。大家可以从下面的运行效果图中看到此效果。

在这里插入图片描述

4. 内容总结

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1155285.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

三相马达的电机故障维护

目录 电机故障维护​编辑 更换电机操作 三相电路 热继电器 今天继续小编的工作经验的分享,今天就说说遇到的问题吧,今天组立熔接机出现故障,后面部分出现了“咕噜噜”的杂声,走到后面一听是电机发出的声音。没有办法了就开始拆…

Py之transformers_stream_generator:transformers_stream_generator的简介、安装、使用方法之详细攻略

Py之transformers_stream_generator:transformers_stream_generator的简介、安装、使用方法之详细攻略 目录 transformers_stream_generator的简介 1、Web Demo T1、original T2、stream transformers_stream_generator的安装 transformers_stream_generator的…

【Linux虚拟机】 JDK、Tomcat、MySQL安装配置讲解

目录 一、上传安装包到服务器 二、JDK与Tomcat安装 2.1 解压安装包 2.2 配置JDK环境变量 2.3 配置Tomcat环境 三、MySQL安装配置 3.1 删除默认数据库 3.2 安装mysql安装包 3.3 mysql初始化操作 四、后端接口部署 4.1 导入项目.war 4.2 新建数据库 4.3 运行服务器项目…

白票某度自媒体混剪剪辑视频素材/爬虫软件说明文档

大家好,我是淘小白~ 软件:某度自媒体混剪素材爬虫软件 语言:Python 说明文档: 1、自定义关键词采集 2、采集百度aigc视频素材,经过测试,使用剪映的文字成片某度视频素材,可过头条的原创检测…

SPSS单样本t检验

前言: 本专栏参考教材为《SPSS22.0从入门到精通》,由于软件版本原因,部分内容有所改变,为适应软件版本的变化,特此创作此专栏便于大家学习。本专栏使用软件为:SPSS25.0 本专栏所有的数据文件请点击此链接下…

OSFP基础实验

目录 题目:拓扑如下 实验步骤: 第一步:设计思路 第二步:搭建拓扑 第三步:配置命令 1)IP地址配置 2)OSPF配置 3)R3部分接口做静默接口 4)缺省路由 5&#xff09…

数据结构之“初窥门径”

目录 前言: 一,数据结构起源 二,基本概念和术语 2.1数据 2.2数据元素 2.3数据项 2.4数据对象 2.5数据结构 三,逻辑结构与物理结构 3.1逻辑结构 3.1.1集合结构 3.1.2线性结构 3.1.3树形结构 3.1.4图形结构 3.2物理结…

unity中meta文件GUID异常问题

错误信息: The .meta file Assets/Scripts/Editor/ConvertConfigToBinary/TxtConverter.cs.meta does not have a valid GUID and its corresponding Asset file will be ignored. If this file is not malformed, please add a GUID, or delete the .meta file and…

深度了解msvcr110.dll丢失的5个解决方法以及原因

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcr110.dll丢失”。这个错误提示通常出现在运行某些程序时,它意味着计算机无法找到所需的动态链接库文件。本文将详细介绍msvcr110.dll丢失的原因以及5个解决方法。 一、msvc…

[Unity+智谱AI开放平台]调用ChatGLM Tuobo模型驱动AI小姐姐数字人

1.简述 本篇文章主要介绍一下,在Unity端,集成智谱AI开放平台提供的chatglm模型api,实现AI聊天互动相关的功能。从智谱AI官方站点上看到,提供有chatglm turbo的公共模型服务,能够实现32K超长上下文,应用到我…

Python 中__name__ == ‘__main__‘使用说明

在学习C语言的时候,程序的运行是从main函数开始的,因此,功能代码一般写到main函数中,子程序如果想要调用,也需要在main函数中进行调用。 然而,Python语言中,程序从第一行就开始执行(定义函数除外…

不同源安装nginx

Nginx是一款高性能的Web服务器软件。在安装Nginx时,可以选择不同的安装源。 1.官方源:在官方网站下载Nginx的源代码,然后进行编译安装。 2.EPEL源:EPEL (Extra Packages for Enterprise Linux)源是针对Red Hat、CentOS、Scienti…

处理SAP资产折旧AFAB 过账报错:“科目 8019010100 要求一个成本会计分配”

会计在进行资产折旧AFAB时 报错如下所示: 原因分析: 折旧时没有把资产设置得成本中心带到过账凭证的成本中心字段中去。而资产中已经维护了成本中心了。 所以要在资产过账的科目分配中设置一下路径如下: 或者TCODE:ACSET科目设置这…

Java集合操作集锦

原文链接 Java集合操作集锦 集合是最为常见的容器,在日常工作之中经常用到,一些集合的常规操作以及不同的集合之间的转换,虽然看似是基础中的基础,但实践中会发现并不是那么显而易见的,特别是涉及boxing的时候&#x…

NFTScan 发展成为 PlatON 网络最大验证者节点之一

关于 PlatON 区块链:PlatON 是一个开放的金融基础设施,其核心是隐私保护计算。在 LatticeX 基金会的发起和推动下,目标是打造 Web3 时代领先的区块链平台。 PlatON 通过底层基础设施、支付清算系统、资产流通管理平台,构建去信任的…

ArcGIS统计各种土地利用类型的总面积

如下图为研究区多个村的土地利用现状图,现在需统计每种类型的面积总和,以及每个行政村内各种土地利用类型的总面积。本文通过案例的形式,讲解ArcGIS中两种常用的分类统计面积的工具,建议收藏。 文章目录 1. 加载土地利用数据2. 常规属性汇总统计3. 汇总统计数据1. 加载土地…

软件测试之BUG篇(定义,创建,等级,生命周期)

目录 1. BUG 的定义 2. 如何创建 BUG 3. BUG 等级 4. BUG 生命周期 高频面试题: 1. BUG 的定义 当且仅当产品规格书存在且正确时,程序的实现和规格书的要求不匹配时,那就是软件错误。当产品规格说明书没有提到的功能时,以用户…

[MySQL]——SQL预编译、动态sql

键盘敲烂,年薪30万🌈 目录 一、SQL的预编译 📕一条SQL语句的执行过程 📕弊端 📕预编译SQL的优势 📕两种参数占位符 📕小结 二、动态SQL 📕概念介绍: &#x1f4…

协程框架nty_co

一、为什么要有协程? 以DNS请求为例子,客户端向服务器发送域名,服务器回复该域名对应得IP地址。 我们想要以同步的编程方式获得异步的性能!!! 在Linux下,常使用IO多路复用器epoll来管理客户端…

YOLO算法改进4【中阶改进篇】:添加DeformableConvolution卷积模块

论文地址: https://arxiv.org/abs/1811.11168 源码地址:https://github.com/msracver/Deformable-ConvNets 传统的卷积操作是将特征图分成一个个与卷积核大小相同的部分,然后进行卷积操作,每部分在特征图上的位置都是固定的。这样,对于形变比较复杂的物体,使用这种卷积的…