【Android-Compose】手势检测实现按下、单击、双击、长按事件,以及避免频繁单击事件的简单方法
目录:
- 1 `不需要`双击事件 + `规避`频繁单击事件
- 2 需要双击事件(常规写法)
- 3 后记:不建议使用上面的代码自定义按钮
1 不需要
双击事件 + 规避
频繁单击事件
var firstClickTime by remember { mutableStateOf(System.currentTimeMillis()) }
Icon(Icons.Default.Settings,contentDescription = "Localized description",//tint = settingTextColor,// 图标颜色modifier = Modifier.pointerInput(this) {// 手势输入处理detectTapGestures(// 检测点击类型的手势onDoubleTap = null,onTap = {// 当不需要使用双击事件的时候,应该避免频繁点击单击按钮,// 此时,需要先将双击事件的代码onDoubleTap = {...} 全都注释或者设置为null// 如果要触发单击事件的时间 减去 本次第一次按下的时间 大于 800ms,则才认为是合理的单击事件// 避免急速点击时,触发多次单击事件if (System.currentTimeMillis() - firstClickTime > 800) {// 实现单击事件:Toast.makeText(context, "合理单击", Toast.LENGTH_SHORT).show()}},onPress = {this.awaitRelease() // 等待手指抬起// 本次按下的第一时间:firstClickTime = System.currentTimeMillis()//Toast.makeText(context, "每次按下都优先触发", Toast.LENGTH_SHORT).show()},onLongPress = {Toast.makeText(context, "长按", Toast.LENGTH_SHORT).show()})}
)
2 需要双击事件(常规写法)
Icon(Icons.Default.Settings,contentDescription = "Localized description",//tint = settingTextColor,// 图标颜色modifier = Modifier.pointerInput(this) {// 手势输入处理detectTapGestures(// 检测点击类型的手势onDoubleTap = {Toast.makeText(context, "双击", Toast.LENGTH_SHORT).show()},onTap = {Toast.makeText(context, "单击", Toast.LENGTH_SHORT).show()},onPress = {Toast.makeText(context, "每次按下都优先触发", Toast.LENGTH_SHORT).show()},onLongPress = {Toast.makeText(context, "长按", Toast.LENGTH_SHORT).show()})}
)
3 后记:不建议使用上面的代码自定义按钮
上面的代码,在最新的 M3 中,点击按钮不会带有涟漪小动画,可以尝试使用以下:
modifier = Modifier.padding(PaddingValues(bottom = 2.dp)).combinedClickable(onClick = {onTap()// 自定义单击事件},onLongClick = {onLongPress()// 自定义长按事件},onLongClickLabel = stringResource(R.string.app_name))
相关文章:
【Android-Compose】手势检测实现按下、单击、双击、长按事件,以及避免频繁单击事件的简单方法
目录: 1 不需要双击事件 规避频繁单击事件2 需要双击事件(常规写法)3 后记:不建议使用上面的代码自定义按钮 1 不需要双击事件 规避频繁单击事件 var firstClickTime by remember { mutableStateOf(System.currentTimeMillis()…...
AUTOSAR汽车电子嵌入式编程精讲300篇-基于神经网络的CAN总线负载率优化(续)
目录 3.3 SA 算法 3.3.1 SA 算法原理 3.3.2 基于 SA 算法 CAN 总线负载率优化分析...
python爬虫6—高性能异步爬虫
如果有多个URL等待我们爬取,我们通常是一次只能爬取一个,爬取效率低,异步爬虫可以提高爬取效率,可以一次多多个URL同时同时发起请求 异步爬虫方式: 一、多线程、多进程(不建议):可以…...

日历功能——C语言
实现日历功能,输入年份月份,输出日历 #include<stdio.h>int leap_year(int year) {if(year % 4 0 && year % 100 ! 0 || year % 400 0){return 1;}else{return 0;} }int determine_year_month_day(int *day,int month,int year) {if(mo…...

GPIO中断
1.EXTI简介 EXTI是External Interrupt的缩写,指外部中断。在嵌入式系统中,外部中断是一种用于处理外部事件的机制。当外部事件发生时(比如按下按钮、传感器信号变化等),外部中断可以立即打断正在执行的程序࿰…...

springboot完成一个线上图片存放地址+实现前后端上传图片+回显
1.路径 注意路径 2.代码:(那个imagePath没什么用,懒的删了),注意你的本地文件夹要有图片,才可以在线上地址中打开查看 package com.xxx.common.config;import org.springframework.beans.factory.annotat…...
编程思维与生活琐事的内在关联及其应用价值
随着科技的日益普及和信息化时代的到来,编程作为一种现代技能,其影响已不再局限于专业领域,而是逐步渗透到人们的日常生活之中。探讨编程与生活琐事之间的关系,有助于我们更好地理解如何将技术智慧应用于日常管理,提升…...

OSPF排错
目录 实验拓扑图 实验要求 实验排错 故障一 故障现象 故障分析 故障解决 故障二 故障现象 故障分析 故障解决 故障三 故障现象 故障分析 故障解决 故障四 故障现象 故障分析 故障解决 故障五 故障现象 故障分析 故障解决 故障六 故障现象 故障分析 …...

day07-CSS高级
01-定位 作用:灵活的改变盒子在网页中的位置 实现: 1.定位模式:position 2.边偏移:设置盒子的位置 left right top bottom 相对定位 position: relative 特点: 不脱标,占用自己原来位置 显示模…...

05 MP之ActiveRecord模式+SimpleQuery
1. ActiveRecord ActiveRecord(活动记录,简称AR),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。 其目标是通过围绕一个数据对象, 进行全部的CRUD操作。 1.1 让实体类…...
git diff查看比对两次不同时间点提交的异同
git diff查看比对两次不同时间点提交的异同 用 git diff命令: git diff commit-id-1 commit-id-2 不同commit-id在不同的时间点提交产生,因为也可以认为git diff是比对两个不同时间点的代码异同。 git diff比较不同commit版本的代码文件异同_git diff c…...

基于muduo网络库开发服务器程序和CMake构建项目 笔记
跟着施磊老师做C项目,施磊老师_腾讯课堂 (qq.com) 一、基于muduo网络库开发服务器程序 组合TcpServer对象创建EventLoop事件循环对象的指针明确TcpServer构造函数需要什么参数,输出ChatServer的构造函数在当前服务器类的构造函数当中,注册处理连接的回调函数和处理…...
前端支持下载模板、导入数据、导出数据(excel格式)
前言 xlsx是由SheetJS开发的一个处理excel文件的npm库,适用于前端开发者实现下载模板、导入导出excel文件等需求,演示的项目的技术栈为vue3 elementPlus 一. 引入xlsx 安装xlsx npm install xlsx引入xlsx import * as XLSX from xlsx;二. 下载模板 const han…...
编译Faiss-gpu【InterMKL】C++ 按步骤操作 基本不会有问题的 python原理相同。
编译Faiss-gpu C++ 基本介绍 使用Faiss版本【1.7.4】 该项目依赖于BLAS 组件 OpenBLAS 和 IntelMKL BLAS 【官方支持】 IntelMKL 会比 OpenBLAS 快的多。 【来自官方结论】 本机环境 Cuda :11.1 Cuda-Driver: 515 InterMKL: 2021.2.0 Faiss :1.7.4 注意:faiss仅…...
conn.execute的用法详解
conn.execute的用法详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将深入研究数据库连接中conn.execute的用法,解析它的功能、…...
GetBuffer() 与 ReleaseBuffer() 使用详解
GetBuffer() 与 ReleaseBuffer() 使用详解 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将深入研究在编程中常用的GetBuffer()与ReleaseBuff…...

Flink CEP(基本概念)
Flink CEP 在Flink的学习过程中,我们已经掌握了从基本原理和核心层的DataStream API到底层的处理函数,再到应用层的Table API和SQL的各种手段,可以应对实际应用开发的各种需求。然而,在实际应用中,还有一类更为复…...
[AIGC] Spring Gateway与 nacos 简介
文章目录 Spring Gateway简介主要特性优点总结 Nacos简介主要特性优点总结 Spring Gateway 简介 Spring Gateway是一个基于Spring Framework的工具,用于构建和管理微服务架构中的网关。它提供了一种简单而灵活的方式来路由和过滤请求,以及在微服务之间…...

2024-2-3-复习作业
1> 要求: 效果图: 2> 要求: 效果图: 3> 要求: 效果图: 源代码: #include <stdio.h> #include <stdlib.h> typedef int datatype; typedef struct Node {datatype data…...
【如何快速上手Vue.js框架——详细介绍】
如何快速上手Vue.js框架——详细介绍 1. 介绍2. 理解Vue.js的核心概念3. 搭建开发环境4. 创建第一个项目5. 学习基础6. 进阶概念7. 最佳实践和模式8. 构建和部署9. 持续学习10. 实际操作 1. 介绍 要快速上手Vue.js框架,可以按照以下步骤进行学习和实践:…...

pycharm中提示C++ compiler not found -- please install a compiler
1.最近用pycharm编译一个开源库,编译的依赖c compiler 2.单单使用pycharm编译,编译器报错C compiler not found – please install a compiler 3.需要在配置环境中引入对应库 4.从新编译后没有提示:C compiler not found – please install a compiler错误。...
多模型协同:基于 SAM 分割 + YOLO 检测 + ResNet 分类的工业开关状态实时监控方案
一、技术优势与适配性分析 1. 任务分工的合理性 YOLO(目标检测) 核心价值:快速定位工业开关在图像中的位置(边界框),为后续分割和分类提供ROI(感兴趣区域)。工业场景适配性…...
NoSQL 之Redis哨兵
目录 一、Redis 哨兵模式概述 (一)背景与核心目标 (二)基本架构组成 (三)核心功能 二、哨兵模式实现原理 (一)配置关键参数 (二)哨兵节点的定时任务 …...

OpenCV 图像色彩空间转换与抠图
一、知识点: 1、色彩空间转换函数 (1)、void cvtColor( InputArray src, OutputArray dst, int code, int dstCn 0, AlgorithmHint hint cv::ALGO_HINT_DEFAULT ); (2)、将图像从一种颜色空间转换为另一种。 (3)、参数说明: src: 输入图像,即要进行颜…...
Go 中的 Map 与字符处理指南
Go 中的 Map 与字符处理指南 在 Go 中,map 可以存储字符,但需要理解字符在 Go 中的表示方式。在 Go 语言中,"字符" 实际上有两种表示方法:byte(ASCII 字符)和 rune(Unicode 字符&…...

MVC与MVP设计模式对比详解
MVC(Model-View-Controller)和MVP(Model-View-Presenter)是两种广泛使用的分层架构模式,核心目标是解耦业务逻辑、数据和界面,提升代码可维护性和可测试性。以下是它们的对比详解: MVC 模式&…...

c++中的输入输出流(标准IO,文件IO,字符串IO)
目录 (1)I/O概述 I/O分类 不同I/O的继承关系 不同I/O对应的头文件 (2)iostream 标准I/O流 iostream头文件中的IO流对象 iostream头文件中重载了<<和>> 缓冲区示意图 标准输入流 cin用法 cin:按空…...
Elasticsearch的审计日志(Audit Logging)介绍
Elasticsearch 的审计日志(Audit Logging)是一种记录与安全相关事件的功能,用于监控和追踪对集群的访问行为。通过审计日志,管理员可以了解谁在何时对哪些资源执行了什么操作,从而满足合规性要求、进行安全分析和排查异常行为。 一、审计日志的核心功能 记录安全事件捕获…...
ADI硬件笔试面试题型解析下
本专栏预计更新60期左右。当前第17期-ADI硬件. ADI其硬件工程师岗位的招聘流程通常包括笔试和多轮技术面试,考察领域涵盖模拟电路设计、数字电路、半导体器件和信号处理等。 本文通过分析平台上的信息,汇总了ADI硬件工程师的典型笔试和面试题型,并提供详细解析和备考建议,…...

监测预警系统重塑隧道安全新范式
在崇山峻岭的脉络间延伸的隧道,曾是交通安全的薄弱环节。智慧隧道监测预警系统的诞生,正在彻底改变这种被动防御格局,通过数字神经网络的构建,为地下交通动脉注入智能守护基因。 一、安全防控体系的质变升级 1.风险感知维度革命…...