From f3e32cc0060f199b5be991505c9af86d2a83f699 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Thu, 23 Apr 2026 10:50:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=E6=B7=BB=E5=8A=A0=E8=A7=A6?= =?UTF-8?q?=E6=91=B8=E4=BA=8B=E4=BB=B6=E5=A4=84=E7=90=86=E4=BB=A5=E6=8E=A8?= =?UTF-8?q?=E8=BF=9B=E5=8F=A0=E5=B1=82=E9=98=B6=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 CompositeLayupResultActivity 中添加 MotionEvent 和 ViewConfiguration 导入 - 移除原有的 main 点击监听器逻辑 - 新增 advanceLayupStage 函数用于在不同 UI 模式间切换 - 实现触摸事件分发处理,支持通过触摸推进叠层阶段 - 添加触摸距离判断避免误触,使用 ViewConfiguration 的触摸范围阈值 - 在触摸抬起且未移动时触发叠层阶段推进功能 --- .../glass/ui/CompositeLayupResultActivity.kt | 57 +++++++++++++++++-- 1 file changed, 52 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/nova/brain/glass/ui/CompositeLayupResultActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/CompositeLayupResultActivity.kt index e94662b..60a7cba 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/CompositeLayupResultActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/CompositeLayupResultActivity.kt @@ -4,6 +4,8 @@ import android.content.Intent import android.os.Environment import android.os.Handler import android.os.Looper +import android.view.MotionEvent +import android.view.ViewConfiguration import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -131,11 +133,6 @@ class CompositeLayupResultActivity : BaseActivity when (state) { CompositeLayupResultState.LOADING -> { @@ -253,6 +250,20 @@ class CompositeLayupResultActivity : BaseActivity { + applyMode(UiMode.LAYUP_WORKING) + true + } + UiMode.LAYUP_WORKING -> { + applyMode(UiMode.CONFIRM_FINISH) + true + } + else -> false + } + } + private fun retake() { binding.hint.text = "拍照中,请稍后..." isPhoto = true @@ -291,6 +302,42 @@ class CompositeLayupResultActivity : BaseActivity { + touchDownX = event.x + touchDownY = event.y + touchMoved = false + } + MotionEvent.ACTION_MOVE -> { + if (!touchMoved) { + val deltaX = kotlin.math.abs(event.x - touchDownX) + val deltaY = kotlin.math.abs(event.y - touchDownY) + touchMoved = deltaX > touchSlop || deltaY > touchSlop + } + } + MotionEvent.ACTION_UP -> { + if (!touchMoved && advanceLayupStage()) { + return true + } + } + MotionEvent.ACTION_CANCEL -> touchMoved = true + } + return super.dispatchTouchEvent(event) + } + + override fun onTouchEvent(event: MotionEvent?): Boolean { + return super.onTouchEvent(event) + } + override fun onResume() { super.onResume() GlassMediaServiceHelper.addPhotoCallback(photoCallback)