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()//指定滚动到的位置,这个值与滚动区域的大小有关,也就是代码中的120dpLaunchedEffect(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 += consumeScrollDeltaconsumeScrollDelta})) { //在文本上显示滚动偏移值Text(text = if(scrollOffset == 0f) "ScrollableState"else scrollOffset.toString())}

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

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

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

在这里插入图片描述

4. 内容总结

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

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

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

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

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

相关文章

ROS自学笔记二十: Gazebo里面仿真环境搭建

Gazebo 中创建仿真实现方式有两种:1直接添加内置组件创建仿真环境2: 手动绘制仿真环境 1.添加内置组件创建仿真环境 1.1启动 Gazebo 并添加组件 1.2保存仿真环境 添加完毕后,选择 file ---> Save World as 选择保存路径(功能包下: worlds 目录),文…

什么是开放数据?与数据共享的区别?

​什么是开放? 开放数据是一类可以被任何人免费使用、再利用、再分发的数据——在其限制上,顶多是要求署名和使用类似的协议再分发。 开放数据具有以下特点: 1.可获取性和可访问性:作品应当能够被完整获取,并且所需…

【算法练习Day34】整数拆分不同的二叉搜索树

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 整数拆分不同的二叉搜索树总…

TypeScript -类 -类的基本定义

类的基本概念 类 就是对象的抽象,是对象的模板。 对象 就是类的一个具体实现。比如 【学生】是一个类,每个学生都有姓名、年龄两个属性,每个学生都有一个方法 sayHi()。【小明】是一个【学生】,也就是【学生】类的一个对象&#…

P2503 [HAOI2006] 均分数据

Portal. 考虑一种随机贪心做法。为了让方差尽可能小,要让每一组数的大小尽量接近。所以对于新的一个 a i a_i ai​,把它加入到当前的和最小的一组里。 为了提高正确性,让分组的可能性变多,我们随机 shuffle 这个序列&#xff0…

【httpd】 Apache http服务器目录显示不全解决

文章目录 1. 文件名过长问题1.1 在centos中文件所谓位置etc/httpd/conf.d/httpd-autoindex.conf1.2 在配置文件httpd-autoindex.conf中的修改:1.3 修改完成后重启Apache: 1. 文件名过长问题 1.1 在centos中文件所谓位置etc/httpd/conf.d/httpd-autoindex…

论坛搭建.

目录 一.配置软件仓库 二.安装http php miriadb 三.配置数据库 四.源码拖拽并解压 五.防火墙通过 六.浏览器安装测试 七.界面参数设置 一.配置软件仓库 1.进入仓库目录 cd /etc/yum.repos.d 2.创建仓库文件 vim local.repo 3.在 local.repo中写入:(粘贴的时候注意位…

C++递归实现验证⼆叉搜索树

C递归实现验证⼆叉搜索树 文章目录 C递归实现验证⼆叉搜索树题目链接题目描述解题思路C算法代码: 题目链接 98. 验证二叉搜索树 - 力扣(LeetCode) 题目描述 给你⼀个⼆叉树的根节点root,判断其是否是⼀个有效的⼆叉搜索树。 有效⼆…

吐血整理,Jmeter接口测试-项目案例场景,直接上高速...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 场景一&#xff1…

go 打包运行文件在windows,liunx运行

go 打包windows exe运行文件 1,如果设置过其他系统环境 就要重新设置设置系统环境$env:GOOS "windows"$env:GOARCH "amd64"2,在主函数同目录进行打包 指定main.go为入口主函数go build -o goweb.exe main.go比如src/main.go就在s…

如何优雅的开发?低代码搭建应用如此轻松

目录 一、前言 二、低代码平台体验简述 三、关于平台 四、场景及用户分析 五、产品分析 1、着重讲一下JNPF的编辑器 2、业务流程 六、最后,说些心里话 一、前言 低代码平台改变了应用交付和管理的模式,大幅缩减交付周期,最终帮助业务…

AcWing第 127 场周赛 - AcWing 5283. 牛棚入住+AcWing 5284. 构造矩阵 - 模拟+快速幂+数学

AcWing 5283. 牛棚入住 题目数据范围不大&#xff0c;直接暴力模拟即可 按照题目所说的意思即可。 #include <math.h> #include <stdio.h> #include <algorithm> #include <cstring> #include <iostream> using namespace std; const int N 1…

Docker底层原理:Cgroup V2的使用

文章目录 检查 cgroup2 文件系统是否已加载检查系统是否已挂载 cgroup2 文件系统创建 cgroup2 层次结构查看 cgroup2 开启的资源控制类型启用 cgroup2 资源控制设置 cgroup2 资源限制加入进程到 cgroup2 检查 cgroup2 文件系统是否已加载 cat /proc/filesystems | grep cgroup…

中缀表达式转后缀表达式

一、基本概念 中缀表达式&#xff1a;运算符都在运算数之间的表达式&#xff0c;也就是我们日常见到的表达式&#xff0c;包含括号。例如&#xff1a;(12)*5 后缀表达式&#xff1a;别称逆波兰式&#xff0c;指的是严格从左向右按照运算符出现的顺序进行计算&#xff0c;不包…

【ChatGPT瀑布到水母】AI 在驱动软件研发的革新与实践

这里写目录标题 前言内容简介作者简介专家推荐读者对象目录直播预告 前言 计算机技术的发展和互联网的普及&#xff0c;使信息处理和传输变得更加高效&#xff0c;极大地改变了金融、商业、教育、娱乐等领域的运作方式。数据分析、人工智能和云计算等新兴技术&#xff0c;也在不…

C语言 pthread_create

备注void *&#xff0c;最好添加返回值 原因&#xff1a;在实践中&#xff0c;虽然你的函数可能不需要返回任何值&#xff0c;但为了与 pthread_create 函数的预期函数指针格式相匹配&#xff0c;最好遵守函数指针所需的返回类型。这是一种良好的编程实践&#xff0c;确保你的代…

用起来顺手的在线表结构设计软件工具Itbuilder,与你共享

在线表结构设计软件工具需功能简洁&#xff0c;去除晦涩难懂的设置&#xff0c;化繁为简&#xff0c;实用为上&#xff0c;上手非常容易&#xff0c;这些itbuilder统统可以做到。 itbuilder是一款基于浏览器开发的在线表结构设计软件工具&#xff0c;借助人工智能提高效率&…

玩转视图变量,轻松实现动态可视化数据分析

前言 在当今数据驱动的世界中&#xff0c;数据分析已经成为了企业和组织中不可或缺的一部分。传统的静态数据分析方法往往无法满足快速变化的业务需求和实时决策的要求。为了更好地应对这些挑战&#xff0c;观测云的动态可视化数据分析应运而生。 在动态可视化数据分析中&…

io测试【FPGA】

// module io_def // 模块名字&#xff0c;参数&#xff0c;方法体 (input FPGA_CLK_50M_b5,input key1_k18,input key2_n17,input key3_n18,input key4_h17, //output led1_d15,output led2_c15,output led3_a12,output led4_b12,output beep_h13 //【注】最后一个参数不…

vue3学习(十四)--- vue3中css新特性

文章目录 样式穿透:deep()scoped的原理 插槽选择器:slotted()全局选择器:global()动态绑定CSScss module 样式穿透:deep() 主要是用于修改很多vue常用的组件库&#xff08;element, vant, AntDesigin&#xff09;&#xff0c;虽然配好了样式但是还是需要更改其他的样式就需要用…