From 6318eb51282342db5c9cbc1da59d2d92dcb37136 Mon Sep 17 00:00:00 2001 From: FongMi Date: Tue, 17 Mar 2026 00:21:09 +0800 Subject: [PATCH] Optimize key down check --- .../android/tv/ui/custom/CustomKeyDown.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDown.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDown.java index 66afbb50e..5fb46bcc7 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDown.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/CustomKeyDown.java @@ -32,6 +32,7 @@ public class CustomKeyDown extends GestureDetector.SimpleOnGestureListener imple private boolean changeScale; private boolean changeTime; private boolean animating; + private boolean multiTouch; private boolean touch; private boolean lock; private float bright; @@ -54,9 +55,12 @@ public class CustomKeyDown extends GestureDetector.SimpleOnGestureListener imple } public boolean onTouchEvent(MotionEvent e) { - if (e.getAction() == MotionEvent.ACTION_UP) listener.onTouchEnd(); - if (changeSpeed && e.getAction() == MotionEvent.ACTION_UP) listener.onSpeedEnd(); - if (changeTime && e.getAction() == MotionEvent.ACTION_UP) listener.onSeekEnd(time); + int action = e.getActionMasked(); + if (action == MotionEvent.ACTION_DOWN) multiTouch = false; + if (action == MotionEvent.ACTION_POINTER_DOWN) multiTouch = true; + if (action == MotionEvent.ACTION_UP) listener.onTouchEnd(); + if (changeSpeed && action == MotionEvent.ACTION_UP) listener.onSpeedEnd(); + if (changeTime && action == MotionEvent.ACTION_UP) listener.onSeekEnd(time); return e.getPointerCount() == 2 ? scaleDetector.onTouchEvent(e) : detector.onTouchEvent(e); } @@ -110,7 +114,7 @@ public class CustomKeyDown extends GestureDetector.SimpleOnGestureListener imple @Override public void onLongPress(@NonNull MotionEvent e) { - if (isMultiple(e) || isEdge(e) || changeScale || lock) return; + if (multiTouch || isEdge(e) || changeScale || lock) return; listener.onSpeedUp(); changeSpeed = true; } @@ -120,7 +124,7 @@ public class CustomKeyDown extends GestureDetector.SimpleOnGestureListener imple if (isMultiple(e1) || isEdge(e1) || changeScale || lock || changeSpeed) return true; float deltaX = e2.getX() - e1.getX(); float deltaY = e1.getY() - e2.getY(); - if (touch) checkFunc(distanceX, distanceY, e2); + if (touch) checkFunc(Math.abs(deltaX), Math.abs(deltaY), e2); if (changeTime) listener.onSeeking(time = (long) (deltaX * 50)); if (changeBright) setBright(deltaY); if (changeVolume) setVolume(deltaY); @@ -149,7 +153,8 @@ public class CustomKeyDown extends GestureDetector.SimpleOnGestureListener imple } private void checkFunc(float distanceX, float distanceY, MotionEvent e2) { - if (Math.abs(distanceX) >= Math.abs(distanceY)) changeTime = true; + if ((float) Math.sqrt(distanceX * distanceX + distanceY * distanceY) < ResUtil.dp2px(20)) return; + if (distanceX >= distanceY) changeTime = true; else if (isSide(e2)) checkSide(e2); touch = false; }