feat(common): 添加View点击区域扩展功能并优化主界面重量检测逻辑

- 在CommonExt.kt中新增expandClickArea扩展函数,支持扩大View的点击响应区域
- 新增TouchDelegate导入用于实现点击区域扩展功能
- 调整MainActivity.kt中的重量检测逻辑顺序,先处理联合支付模式下的特殊情况
- 添加对当前用户ID的检查,优化即放即取模式下的重量数据处理流程
- 重构重量重置识别条件的位置,确保正确的执行顺序
This commit is contained in:
2026-04-08 10:52:09 +08:00
parent a45690d3be
commit 2ba55ef027
2 changed files with 31 additions and 5 deletions
@@ -365,11 +365,6 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
it.text = "$weight" it.text = "$weight"
} }
} }
if (weight <= WEIGHT_RESET_RECOGNIZE) {
log("registerDataChange weight 秤重量小于${WEIGHT_RESET_RECOGNIZE}g")
//检测到秤上没有东西,重新启动识别菜品 && presentation?.mealPickupMode == 1
checkedItem = null
}
if (settlementMode == 0) { if (settlementMode == 0) {
log("registerDataChange weight 联合支付模式") log("registerDataChange weight 联合支付模式")
//联合支付------------------------------------------- //联合支付-------------------------------------------
@@ -379,10 +374,19 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
loadYLJLBySettlement(weight) loadYLJLBySettlement(weight)
return return
} }
if (presentation?.currentUserId.isNullOrBlank().not()) {
//联合支付+即放即取,已识别人脸的状态下,从秤上拿餐品后,不再读取数据,等待人脸离开提交订单
return
}
loadJFJQBySettlement(weight) loadJFJQBySettlement(weight)
return return
} }
if (weight <= WEIGHT_RESET_RECOGNIZE) {
log("registerDataChange weight 秤重量小于${WEIGHT_RESET_RECOGNIZE}g")
//检测到秤上没有东西
checkedItem = null
}
//独立支付------------------------------------------- //独立支付-------------------------------------------
if (lastWeight - weight > 5) { if (lastWeight - weight > 5) {
//及放及取,从秤上拿走超过5克 //及放及取,从秤上拿走超过5克
@@ -9,6 +9,7 @@ import android.graphics.Rect
import android.graphics.YuvImage import android.graphics.YuvImage
import android.util.DisplayMetrics import android.util.DisplayMetrics
import android.util.TypedValue import android.util.TypedValue
import android.view.TouchDelegate
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
@@ -172,3 +173,24 @@ val Context.screenSize: IntArray
displayMetrics.heightPixels 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)
}
}