You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JetPack Compose:实现长按时长判断并触发对应日志逻辑

实现Jetpack Compose Card长按1秒后触发日志的方案

刚好做过类似的需求,这里给你一个简洁的实现思路,核心是通过Compose的触摸事件监听来跟踪长按时长,具体代码如下:

@Composable
fun TimedLongPressCard(modifier: Modifier? = null) {
    // 用remember保存长按开始的时间戳,初始值0表示未触发长按
    val pressStartTime = remember { mutableStateOf<Long>(0) }

    Card(
        modifier = Modifier
            .fillMaxWidth()
            .then(modifier ?: Modifier)
            // 添加触摸输入监听
            .pointerInput(Unit) {
                detectTapGestures(
                    onPress = {
                        // 手指按下时记录当前时间
                        pressStartTime.value = System.currentTimeMillis()
                        try {
                            // 挂起直到手指松开或触摸被取消
                            tryAwaitRelease()
                            // 计算长按时长
                            val duration = System.currentTimeMillis() - pressStartTime.value
                            // 判断是否超过1秒
                            if (duration >= 1000) {
                                println("CLICKED")
                            }
                        } finally {
                            // 无论成功还是取消,都重置开始时间
                            pressStartTime.value = 0
                        }
                    }
                )
            },
        backgroundColor = colorResource(id = R.color.Red),
        shape = RoundedCornerShape(percent = 50),
    ) {
        Row(
            modifier = Modifier
                .size(160.dp)
        ) {
            // 这里可以添加Card内部的UI内容
        }
    }
}

关键逻辑说明:

  • 状态管理:用remember创建pressStartTime状态变量,确保在Compose重组时不会丢失计时数据。
  • 触摸事件处理:通过pointerInput修饰符和detectTapGestures的onPress回调来监听完整的触摸周期(按下→松开/取消)。
    • 手指按下时,调用System.currentTimeMillis()记录当前时间戳。
    • tryAwaitRelease()会挂起协程,直到用户松开手指或者触摸事件被系统取消(比如手指滑出组件范围)。
    • 松开后计算时长,若超过1000毫秒则打印日志。
    • 用finally块确保无论触摸是正常结束还是被取消,都重置pressStartTime,避免影响下一次触摸判断。

这个方案能精准满足你的需求:只有当用户长按超过1秒后松开,才会执行日志打印;如果1秒内松开,不会有任何操作。

内容的提问来源于stack exchange,提问作者KTOV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 18:02:34