From 2ba55ef02791c8796f9b7b0f15a22f58cc2e4d59 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Wed, 8 Apr 2026 10:52:09 +0800 Subject: [PATCH] =?UTF-8?q?feat(common):=20=E6=B7=BB=E5=8A=A0View=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E5=8C=BA=E5=9F=9F=E6=89=A9=E5=B1=95=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E4=B8=BB=E7=95=8C=E9=9D=A2=E9=87=8D?= =?UTF-8?q?=E9=87=8F=E6=A3=80=E6=B5=8B=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在CommonExt.kt中新增expandClickArea扩展函数,支持扩大View的点击响应区域 - 新增TouchDelegate导入用于实现点击区域扩展功能 - 调整MainActivity.kt中的重量检测逻辑顺序,先处理联合支付模式下的特殊情况 - 添加对当前用户ID的检查,优化即放即取模式下的重量数据处理流程 - 重构重量重置识别条件的位置,确保正确的执行顺序 --- .../sw/dualscreen/activity/MainActivity.kt | 14 +++++++----- .../java/com/sw/dualscreen/ext/CommonExt.kt | 22 +++++++++++++++++++ 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/sw/dualscreen/activity/MainActivity.kt b/app/src/main/java/com/sw/dualscreen/activity/MainActivity.kt index 41ae55f..7df5e9e 100644 --- a/app/src/main/java/com/sw/dualscreen/activity/MainActivity.kt +++ b/app/src/main/java/com/sw/dualscreen/activity/MainActivity.kt @@ -365,11 +365,6 @@ class MainActivity : BaseActivity() { it.text = "$weight" } } - if (weight <= WEIGHT_RESET_RECOGNIZE) { - log("registerDataChange weight 秤重量小于${WEIGHT_RESET_RECOGNIZE}g") - //检测到秤上没有东西,重新启动识别菜品 && presentation?.mealPickupMode == 1 - checkedItem = null - } if (settlementMode == 0) { log("registerDataChange weight 联合支付模式") //联合支付------------------------------------------- @@ -379,10 +374,19 @@ class MainActivity : BaseActivity() { loadYLJLBySettlement(weight) return } + if (presentation?.currentUserId.isNullOrBlank().not()) { + //联合支付+即放即取,已识别人脸的状态下,从秤上拿餐品后,不再读取数据,等待人脸离开提交订单 + return + } loadJFJQBySettlement(weight) return } + if (weight <= WEIGHT_RESET_RECOGNIZE) { + log("registerDataChange weight 秤重量小于${WEIGHT_RESET_RECOGNIZE}g") + //检测到秤上没有东西 + checkedItem = null + } //独立支付------------------------------------------- if (lastWeight - weight > 5) { //及放及取,从秤上拿走超过5克 diff --git a/app/src/main/java/com/sw/dualscreen/ext/CommonExt.kt b/app/src/main/java/com/sw/dualscreen/ext/CommonExt.kt index 4d96efd..203c9d1 100644 --- a/app/src/main/java/com/sw/dualscreen/ext/CommonExt.kt +++ b/app/src/main/java/com/sw/dualscreen/ext/CommonExt.kt @@ -9,6 +9,7 @@ import android.graphics.Rect import android.graphics.YuvImage import android.util.DisplayMetrics import android.util.TypedValue +import android.view.TouchDelegate import android.view.View import android.view.WindowManager import android.view.inputmethod.EditorInfo @@ -172,3 +173,24 @@ val Context.screenSize: IntArray displayMetrics.heightPixels ) } + +/** + * 扩大 View 的点击区域 + * @param horizontal 水平方向扩大距离(dp)→ 左右各扩大一半 + * @param vertical 垂直方向扩大距离(dp)→ 上下各扩大一半 + */ +fun View.expandClickArea(horizontal: Int, vertical: Int) { + val density = resources.displayMetrics.density + val hPx = (horizontal * density).toInt() + val vPx = (vertical * density).toInt() + + post { + val rect = android.graphics.Rect() + getHitRect(rect) + + // 扩大区域:负值 = 向外扩大 + rect.inset(-hPx, -vPx) + //rect.bottom += downPx // 只往下扩大 + (parent as View).touchDelegate = TouchDelegate(rect, this) + } +}