diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackNavBarTouchController.java b/quickstep/src/com/android/quickstep/fallback/FallbackNavBarTouchController.java index 8a87f63aaf..69de3b0f98 100644 --- a/quickstep/src/com/android/quickstep/fallback/FallbackNavBarTouchController.java +++ b/quickstep/src/com/android/quickstep/fallback/FallbackNavBarTouchController.java @@ -45,8 +45,7 @@ public class FallbackNavBarTouchController implements TouchController, NavBarPosition navBarPosition = new NavBarPosition(sysUINavigationMode, DisplayController.INSTANCE.get(mActivity).getInfo()); mTriggerSwipeUpTracker = new TriggerSwipeUpTouchTracker(mActivity, - true /* disableHorizontalSwipe */, navBarPosition, - null /* onInterceptTouch */, this); + true /* disableHorizontalSwipe */, navBarPosition, this); } else { mTriggerSwipeUpTracker = null; } @@ -78,7 +77,4 @@ public class FallbackNavBarTouchController implements TouchController, public void onSwipeUp(boolean wasFling, PointF finalVelocity) { mActivity.getOverviewPanel().startHome(); } - - @Override - public void onSwipeUpCancelled() {} } diff --git a/quickstep/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java index 41730bbc40..42e8694f6a 100644 --- a/quickstep/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java +++ b/quickstep/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java @@ -51,7 +51,7 @@ public class OverviewWithoutFocusInputConsumer implements InputConsumer, mGestureState = gestureState; mInputMonitor = inputMonitor; mTriggerSwipeUpTracker = new TriggerSwipeUpTouchTracker(context, disableHorizontalSwipe, - deviceState.getNavBarPosition(), this::onInterceptTouch, this); + deviceState.getNavBarPosition(), this); } @Override @@ -69,7 +69,8 @@ public class OverviewWithoutFocusInputConsumer implements InputConsumer, mTriggerSwipeUpTracker.onMotionEvent(ev); } - private void onInterceptTouch() { + @Override + public void onSwipeUpTouchIntercepted() { if (mInputMonitor != null) { TestLogging.recordEvent(TestProtocol.SEQUENCE_PILFER, "pilferPointers"); mInputMonitor.pilferPointers(); @@ -93,7 +94,4 @@ public class OverviewWithoutFocusInputConsumer implements InputConsumer, .build()) .log(LAUNCHER_HOME_GESTURE); } - - @Override - public void onSwipeUpCancelled() {} } diff --git a/quickstep/src/com/android/quickstep/inputconsumers/SysUiOverlayInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/SysUiOverlayInputConsumer.java index 4806ac1d6e..871d0759c5 100644 --- a/quickstep/src/com/android/quickstep/inputconsumers/SysUiOverlayInputConsumer.java +++ b/quickstep/src/com/android/quickstep/inputconsumers/SysUiOverlayInputConsumer.java @@ -54,7 +54,7 @@ public class SysUiOverlayInputConsumer implements InputConsumer, mContext = context; mInputMonitor = inputMonitor; mTriggerSwipeUpTracker = new TriggerSwipeUpTouchTracker(context, true, - deviceState.getNavBarPosition(), this::onInterceptTouch, this); + deviceState.getNavBarPosition(), this); } @Override @@ -72,7 +72,8 @@ public class SysUiOverlayInputConsumer implements InputConsumer, mTriggerSwipeUpTracker.onMotionEvent(ev); } - private void onInterceptTouch() { + @Override + public void onSwipeUpTouchIntercepted() { if (mInputMonitor != null) { TestLogging.recordEvent(TestProtocol.SEQUENCE_PILFER, "pilferPointers"); mInputMonitor.pilferPointers(); @@ -88,9 +89,4 @@ public class SysUiOverlayInputConsumer implements InputConsumer, Log.e(TAG, "Exception calling closeSystemDialogs " + e.getMessage()); } } - - @Override - public void onSwipeUpCancelled() { - - } } diff --git a/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java b/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java index c4a2216251..c00f508e8d 100644 --- a/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java +++ b/quickstep/src/com/android/quickstep/interaction/NavBarGestureHandler.java @@ -65,7 +65,7 @@ public class NavBarGestureHandler implements OnTouchListener, mSwipeUpTouchTracker = new TriggerSwipeUpTouchTracker(context, true /*disableHorizontalSwipe*/, new NavBarPosition(NavigationMode.NO_BUTTON, displayInfo), - null /*onInterceptTouch*/, this); + this); mMotionPauseDetector = new MotionPauseDetector(context); final Resources resources = context.getResources(); diff --git a/quickstep/src/com/android/quickstep/util/TriggerSwipeUpTouchTracker.java b/quickstep/src/com/android/quickstep/util/TriggerSwipeUpTouchTracker.java index 7bbde30df8..c63a58ee75 100644 --- a/quickstep/src/com/android/quickstep/util/TriggerSwipeUpTouchTracker.java +++ b/quickstep/src/com/android/quickstep/util/TriggerSwipeUpTouchTracker.java @@ -28,6 +28,8 @@ import android.graphics.PointF; import android.view.MotionEvent; import android.view.VelocityTracker; +import androidx.annotation.NonNull; + import com.android.launcher3.R; import com.android.launcher3.Utilities; @@ -41,21 +43,20 @@ public class TriggerSwipeUpTouchTracker { private final float mMinFlingVelocity; private final boolean mDisableHorizontalSwipe; private final NavBarPosition mNavBarPosition; - private final Runnable mOnInterceptTouch; + + @NonNull private final OnSwipeUpListener mOnSwipeUp; private boolean mInterceptedTouch; private VelocityTracker mVelocityTracker; public TriggerSwipeUpTouchTracker(Context context, boolean disableHorizontalSwipe, - NavBarPosition navBarPosition, Runnable onInterceptTouch, - OnSwipeUpListener onSwipeUp) { + NavBarPosition navBarPosition, @NonNull OnSwipeUpListener onSwipeUp) { mSquaredTouchSlop = Utilities.squaredTouchSlop(context); mMinFlingVelocity = context.getResources().getDimension( R.dimen.quickstep_fling_threshold_speed); mNavBarPosition = navBarPosition; mDisableHorizontalSwipe = disableHorizontalSwipe; - mOnInterceptTouch = onInterceptTouch; mOnSwipeUp = onSwipeUp; init(); @@ -103,10 +104,7 @@ public class TriggerSwipeUpTouchTracker { } mInterceptedTouch = true; - - if (mOnInterceptTouch != null) { - mOnInterceptTouch.run(); - } + mOnSwipeUp.onSwipeUpTouchIntercepted(); } } break; @@ -124,7 +122,8 @@ public class TriggerSwipeUpTouchTracker { } } - private void endTouchTracking() { + /** Finishes the tracking. All events after this call are ignored */ + public void endTouchTracking() { if (mVelocityTracker != null) { mVelocityTracker.recycle(); mVelocityTracker = null; @@ -151,12 +150,10 @@ public class TriggerSwipeUpTouchTracker { isSwipeUp = squaredHypot(displacementX, displacementY) >= mSquaredTouchSlop; } - if (mOnSwipeUp != null) { - if (isSwipeUp) { - mOnSwipeUp.onSwipeUp(wasFling, new PointF(velocityX, velocityY)); - } else { - mOnSwipeUp.onSwipeUpCancelled(); - } + if (isSwipeUp) { + mOnSwipeUp.onSwipeUp(wasFling, new PointF(velocityX, velocityY)); + } else { + mOnSwipeUp.onSwipeUpCancelled(); } } @@ -172,6 +169,9 @@ public class TriggerSwipeUpTouchTracker { void onSwipeUp(boolean wasFling, PointF finalVelocity); /** Called on touch up if a swipe up was not detected. */ - void onSwipeUpCancelled(); + default void onSwipeUpCancelled() { } + + /** Called when the touch for swipe up is intercepted. */ + default void onSwipeUpTouchIntercepted() { } } }