Android Compose 十:常用组件列表 监听
1 去掉超出滑动区域时的拖拽的阴影
即 overScrollMode

代码如下
CompositionLocalProvider(LocalOverscrollConfiguration provides null) {LazyColumn() {items(list, key = {list.indexOf(it)}){Row(Modifier.animateItemPlacement(tween(durationMillis = 250))) {Text(text = "条目>>${it}")}}}}
效果

如果你都不需要这个效果,可以在MyApplicationTheme的content里 包一层CompositionLocalProvider
MyApplicationTheme

- CompositionLocalProvider
CompositionLocal 是定义数据的方式,而 CompositionLocalProvider 是在 Compose UI 树中传递这些数据的工具。更多自行百度吧
2 滑动监听
2.1 state的监听
val lazyListState = rememberLazyListState()LazyColumn(state = lazyListState) {items(list, key = { list.indexOf(it) }) {Row(Modifier.animateItemPlacement(tween(durationMillis = 250))) {Text(text = "条目>>${it}")}}}
官方文档有以下描述

大意就是,我们需要监听滑动的状态,用于不同的处理
那么我们之前使用recyclerview的时候,可以通过LayoutManager监听滑动,并且可以获取到当前显示的第一条条目和最后一条条目;
然后就可以判断是否上拉加载更多,或者下拉刷新
此处我们改吧改吧
LaunchedEffect(lazyListState) {snapshotFlow { lazyListState.isScrollInProgress } //监听是否在滑动.collect {Log.i("bl_test","it>>${it}")Log.i("bl_test"," lazyListState.firstVisibleItemIndex>>${ lazyListState.firstVisibleItemIndex}")}}
当我们滑动开始和停止的时候打印如下日志
2024-06-06 11:51:49.816 20115-20115/com.zqq.myapplication I/bl_test: it>>true
2024-06-06 11:51:49.816 20115-20115/com.zqq.myapplication I/bl_test: lazyListState.firstVisibleItemIndex>>0
2024-06-06 11:51:52.091 20115-20115/com.zqq.myapplication I/bl_test: it>>false
2024-06-06 11:51:52.091 20115-20115/com.zqq.myapplication I/bl_test: lazyListState.firstVisibleItemIndex>>6
这里暂时不知如何判断 条目完全显示的情况,LayoutManager是有这个方法的;
方案就是 lazyListState 可以获取到第一条目的偏移量 可以通过此来判断;
- 更多的监听 前面写过interactions 状态监听
LaunchedEffect(lazyListState){lazyListState.interactionSource.interactions.collect{Log.i("bl_test","it>>${it}")Log.i("bl_test","it>>${it.javaClass}")Log.i("bl_test","it>>${it is DragInteraction}")Log.i("bl_test","it>>${it is DragInteraction.Start}")Log.i("bl_test","it>>${it is DragInteraction.Stop}")Log.i("bl_test","it>>${it is DragInteraction.Cancel}")if(it is DragInteraction.Stop){ //滑动结束 获取第一条显示的条目Log.i("bl_test"," lazyListState.firstVisibleItemIndex>>${ lazyListState.firstVisibleItemIndex}")Log.i("bl_test"," lazyListState.firstVisibleItemScrollOffset>>${ lazyListState.firstVisibleItemScrollOffset}")}}}
结果

- Modifier.scrollable
val scrollableState = rememberScrollableState(){Log.i("bl_test","it>>"+it)it}LazyColumn(state = lazyListState,modifier = Modifier.scrollable(state = scrollableState,orientation = Orientation.Vertical)) {items(list, key = { list.indexOf(it) }) {Row(Modifier.animateItemPlacement(tween(durationMillis = 250))) {Text(text = "条目>>${it}")}}}
rememberScrollableState 的 翻译

打印日志 效果
-
当未滑动到顶部或者底部时 回调it值一直为0
-
滑动到顶部继续拖拽时 值 大于0
-
滑动到底部时 值 小于0
-
惯性滑动到顶部时 值 大于0 后 递减

…(此处省略大部分值)

-
惯性滑动到顶部时 值 小于0 递增

…(此处省略大部分值)

依据此值应该可以判断出 滑动到了底部或者顶部
-
Modifier .verticalScroll()
报错了

-
Modifier .nestedScroll 监听滑动状态
val nestedConnection = remember {object : NestedScrollConnection{override suspend fun onPostFling(consumed: Velocity, available: Velocity): Velocity {Log.i("bl_test","onPostFling")return super.onPostFling(consumed, available)}override fun onPostScroll(consumed: Offset,available: Offset,source: NestedScrollSource): Offset {Log.i("bl_test","onPostScroll")return super.onPostScroll(consumed, available, source)}override suspend fun onPreFling(available: Velocity): Velocity {Log.i("bl_test","onPreFling")return super.onPreFling(available)}override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset {Log.i("bl_test","onPreScroll")return super.onPreScroll(available, source)}}}LazyColumn(state = lazyListState,modifier = Modifier.nestedScroll(connection = nestedConnection)) {items(list, key = { list.indexOf(it) }) {Row(Modifier.animateItemPlacement(tween(durationMillis = 250))) {Text(text = "条目>>${it}")}}}
结果

相关文章:
Android Compose 十:常用组件列表 监听
1 去掉超出滑动区域时的拖拽的阴影 即 overScrollMode 代码如下 CompositionLocalProvider(LocalOverscrollConfiguration provides null) {LazyColumn() {items(list, key {list.indexOf(it)}){Row(Modifier.animateItemPlacement(tween(durationMillis 250))) {Text(text…...
Wireshark 如何查找包含特定数据的数据帧
1、查找包含特定 string 的数据帧 使用如下指令: 双引号中所要查找的字符串 frame contains "xxx" 查找字符串 “heartbeat” 示例: 2、查找包含特定16进制的数据帧 使用如下指令: TCP:在TCP流中查找 tcp contai…...
【深度学习入门篇一】阿里云服务器(不需要配环境直接上手跟学代码)
前言 博主刚刚开始学深度学习,配环境配的心力交瘁,一塌糊涂,不想配环境的刚入门的同伴们可以直接选择阿里云服务器 阿里云天池实验室,在入门阶段跑个小项目完全没有问题,不要自己傻傻的在那配环境配了半天还不匹配&a…...
app,waf笔记
API攻防 知识点: 1、HTTP接口类-测评 2、RPC类接口-测评 3、Web Service类-测评 内容点: SOAP(Simple Object Access Protocol)简单对象访问协议是交换数据的一种协议规范,是一种轻量级的、简单的、基于XML&#…...
数据仓库之维度建模
维度建模(Dimensional Modeling)是一种用于数据仓库设计的方法,旨在优化查询性能并提高数据的可读性。它通过组织数据为事实表和维度表的形式,提供直观的、易于理解的数据模型,使业务用户能够轻松地进行数据分析和查询…...
解决远程服务器连接报错
最近使用服务器进行数据库连接和使用的时候出现了一个报错: Error response from daemon: Conflict. The container name “/mysql” is already in use by container “1bd3733123219372ea7c9377913da661bb621156d518b0306df93cdcceabb8c4”. You have to remove …...
通过电脑查看Wi-Fi密码的方法,提供三种方式
式一: 右击桌面右下角的网络图标,依次选择【网络和Internet设置】、【WLAN】、【网络和共享中心】。点击已连接的无线网络。依次点击【无线属性】、【安全】,勾选下方【显示字符】即可。 方式二: 在开始菜单输入“cmd”进入命令…...
Nvidia 目前的市值为 3.01 万亿美元,超过苹果Apple
人工智能的繁荣将英伟达的市值推高到足以使其成为全球第二大最有价值的公司。 英伟达已成为全球第二大最有价值的公司。周三下午,这家芯片制造巨头的市值达到 3.01 万亿美元,领先于苹果公司的 3 万亿美元。 喜好儿网AIGC专区:https://heehe…...
用langchain搭配最新模型ollama打造属于自己的gpt
langchain 前段时间去玩了一下langchain,熟悉了一下大模型的基本概念,使用等。前段时间meta的ollama模型发布了3.0,感觉还是比较强大的,在了解过后,自己去用前后端代码,调用ollama模型搭建了一个本地的gpt应用。 核心逻辑 开始搭…...
工业互联网基本概念及关键技术(295页PPT)
资料介绍: 工业互联网的核心是通过工业互联网平台把设备、生产线、工厂、供应商、产品和客户紧密地连接融合起来。这种连接能够形成跨设备、跨系统、跨厂区、跨地区的互联互通,从而提高效率,推动整个制造服务体系智能化。同时,工…...
Python pandas openpyxl excel合并单元格,设置边框,背景色
Python pandas openpyxl excel合并单元格,设置边框,背景色 1. 效果图2. 源码参考 1. 效果图 pandas设置单元格背景色,字体颜色,边框 openpyxl合并单元格,设置丰富的字体 2. 源码 # excel数字与列名互转 import o…...
【vue3|第7期】 toRefs 与 toRef 的深入剖析
日期:2024年6月6日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方ÿ…...
git代码冲突处理软件P4Merge
文章目录 1. 下载安装2. 配置脚本参考链接 1. 下载安装 下载地址:https://www.perforce.com/downloads/helix-visual-client-p4v 下载教程:http://blog.csdn.net/wirelessqa/article/details/9035215 这里下载之前需要注册。 2. 配置脚本 编写一个全局…...
Unity物体材质属性Offset动态偏移
Unity物体材质属性Offset动态偏移 MeshRenderer mr;float offset;public float scrollSpeed 0.5F;private void Start(){mr GetComponent<MeshRenderer>();}void Update(){offset -Time.time * scrollSpeed;mr.material.mainTextureOffset new Vector2(0, -offset);}…...
【数据结构】筛选法建堆
💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…...
DevExpress Installed
一、What’s Installed 统一安装程序将DevExpress控件和库注册到Visual Studio中,并安装DevExpress实用工具、演示应用程序和IDE插件。 Visual Studio工具箱中的DevExpress控件 Visual Studio中的DevExpress菜单 Demo Applications 演示应用程序 Launch the Demo…...
解决QT QMessageBox 弹出需点击两次才能关闭问题
放个链接不迷路:添加链接描述...
Milvus--向量数据库
Milvus 是一个开源的向量数据库,专为高维向量数据的存储、查询和检索而设计。它支持多种类型的向量数据,如浮点数向量、整数向量等,并且提供了强大的向量相似度计算功能。Milvus采用分布式架构,可以轻松地扩展到大规模数据集&…...
php质量工具系列之PHPCPD
PHPCPD 用于检测重复代码,直观的说就是复制粘贴再稍微改改 该工具作者已经 停止维护 安装 composer global require --dev sebastian/phpcpd执行 phpcpd --log-pmd phpcpd_result.xml ./app参数介绍 --log-pmd 将结果保存在phpcpd_result.xml 中 ./app 是phpcpd扫…...
Android14 WMS-窗口绘制之relayoutWindow流程(二)-Server端
本文接着如下文章往下讲 Android14 WMS-窗口绘制之relayoutWindow流程(一)-Client端-CSDN博客 然后就到了Server端WMS的核心实现方法relayoutWindow里 WindowManagerService.java - OpenGrok cross reference for /frameworks/base/services/core/java/com/android/server…...
Keil中内存概念:Flash、SRAM、RO、RW、ZI、.data、.bss、heap、stack、MAP文件
此文章转载于微信公众号:嵌入式电子学习,只作为笔记备忘录使用 内存属性 理解Keil MDK(或ARM编译器)中关于程序内存布局的一些基本概念(RO、RW、ZI和.data、.bss、heap、stack、Flash、SRAM)。这些概念对…...
abaqus constraint 中,tie和coupling的区别
通过AI整理相关问题回答 tie和coupling的区别 在 Abaqus 中,Tie (绑定) 和 Coupling (耦合) 是最常用的两种连接约束,但它们在力学逻辑、自由度限制和应用场景上有着本质的区别。1. Tie Constraint (绑定约束) Tie 的核心逻辑是“胶合”。它将两个表面&a…...
云服务器部署大模型
云服务器部署大模型1. 服务器配置2. 大模型下载3. 部署大模型1. 服务器配置 2. 大模型下载 千问2.5-14B-Instruct https://modelscope.cn/models/Qwen/Qwen2.5-14B-Instruct pip install modelscopemodelscope download --model Qwen/Qwen2.5-14B-Instruct --local_dir /root…...
本地化AI字幕解决方案:Qwen3-ForcedAligner支持多格式音频
本地化AI字幕解决方案:Qwen3-ForcedAligner支持多格式音频 1. 引言:本地化字幕生成的新选择 在视频内容创作和多媒体处理领域,字幕生成一直是个耗时费力的工作。传统手动添加字幕不仅效率低下,时间轴对齐的精度也难以保证。Qwen…...
Nunchaku-flux-1-dev性能调优:针对STM32嵌入式设备演示的图片预处理
Nunchaku-flux-1-dev性能调优:针对STM32嵌入式设备演示的图片预处理 最近在折腾一个智能门禁项目,需要在STM32上跑人脸识别。想法挺简单,本地抓拍人脸,然后传给云端的大模型Nunchaku-flux-1-dev去分析。结果一上手就发现…...
为Cosmos-Reason1-7B开发自定义前端界面:Streamlit快速搭建
为Cosmos-Reason1-7B开发自定义前端界面:Streamlit快速搭建 你是不是已经部署好了Cosmos-Reason1-7B模型,但每次调用都得在命令行里敲代码,或者用那些不太顺手的脚本?想不想给你的模型加一个漂亮、好用,还能分享给别人…...
终极指南:3步快速诊断Windows热键冲突的免费侦探工具
终极指南:3步快速诊断Windows热键冲突的免费侦探工具 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经…...
BilibiliDown:跨平台B站视频下载器的完整使用指南
BilibiliDown:跨平台B站视频下载器的完整使用指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bi…...
APISIX性能优化指南:response_rewrite插件的最佳实践与避坑建议
APISIX性能优化指南:response_rewrite插件的最佳实践与避坑建议 在微服务架构盛行的今天,API网关作为流量入口承担着越来越重要的角色。APISIX凭借其高性能和丰富的插件生态,已成为众多企业技术栈中的关键组件。然而,随着业务规模…...
剪映API全栈开发指南:构建高效视频自动化处理系统
剪映API全栈开发指南:构建高效视频自动化处理系统 【免费下载链接】JianYingApi Third Party JianYing Api. 第三方剪映Api 项目地址: https://gitcode.com/gh_mirrors/ji/JianYingApi 在视频内容工业化生产的浪潮中,内容创作者和技术开发者面临着…...
