From 07111f25f40bc0cf2dcf2f079b9818ea3b8748cc Mon Sep 17 00:00:00 2001 From: Andras Kloczl Date: Wed, 30 Mar 2022 17:25:54 +0100 Subject: [PATCH] Change page snapping logic for large screen devices Use 15% of the screen width instead of 40% of the page width currently used for phones. Test: try page snapping on Launcher home Bug: 213305066 Change-Id: I6a525100bf942c5089f580a27250c425ca95cf00 --- .../com/android/quickstep/views/RecentsView.java | 13 +++++++++---- src/com/android/launcher3/PagedView.java | 15 +++++++-------- src/com/android/launcher3/Workspace.java | 13 +++++++++++++ 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index e64e439779..85ab5ef4f6 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -383,7 +383,7 @@ public abstract class RecentsView mSizeStrategy; @@ -1195,9 +1195,14 @@ public abstract class RecentsView deviceProfile.availableWidthPx * SIGNIFICANT_MOVE_SCREEN_WIDTH_PERCENTAGE; } @Override diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index 1eb493bf13..f5ac359af5 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -1195,8 +1195,8 @@ public abstract class PagedView extends ViewGrou mAllowOverScroll = enable; } - protected float getSignificantMoveThreshold() { - return SIGNIFICANT_MOVE_THRESHOLD; + protected boolean isSignificantMove(float absoluteDelta, int pageOrientedSize) { + return absoluteDelta > pageOrientedSize * SIGNIFICANT_MOVE_THRESHOLD; } @Override @@ -1322,13 +1322,12 @@ public abstract class PagedView extends ViewGrou velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); int velocity = (int) mOrientationHandler.getPrimaryVelocity(velocityTracker, - mActivePointerId); + mActivePointerId); float delta = primaryDirection - mDownMotionPrimary; - delta /= mOrientationHandler.getPrimaryScale(this); - int pageOrientedSize = mOrientationHandler.getMeasuredSize(getPageAt(mCurrentPage)); - - boolean isSignificantMove = Math.abs(delta) - > pageOrientedSize * getSignificantMoveThreshold(); + int pageOrientedSize = (int) (mOrientationHandler.getMeasuredSize( + getPageAt(mCurrentPage)) + * mOrientationHandler.getPrimaryScale(this)); + boolean isSignificantMove = isSignificantMove(Math.abs(delta), pageOrientedSize); mTotalMotion += Math.abs(mLastMotion + mLastMotionRemainder - primaryDirection); boolean passedSlop = mAllowEasyFling || mTotalMotion > mPageSlop; diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 61090e7e64..86e88b7020 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -149,6 +149,8 @@ public class Workspace extends PagedView * {@link #isFinishedSwitchingState()} ()} to return true. */ private static final float FINISHED_SWITCHING_STATE_TRANSITION_PROGRESS = 0.5f; + private static final float SIGNIFICANT_MOVE_SCREEN_WIDTH_PERCENTAGE = 0.15f; + private static final boolean ENFORCE_DRAG_EVENT_ORDER = false; private static final int ADJACENT_SCREEN_DROP_DURATION = 300; @@ -3410,6 +3412,17 @@ public class Workspace extends PagedView return getContext().getString(R.string.workspace_scroll_format, currentPage, totalPages); } + @Override + protected boolean isSignificantMove(float absoluteDelta, int pageOrientedSize) { + DeviceProfile deviceProfile = mLauncher.getDeviceProfile(); + if (!deviceProfile.isTablet) { + return super.isSignificantMove(absoluteDelta, pageOrientedSize); + } + + return absoluteDelta + > deviceProfile.availableWidthPx * SIGNIFICANT_MOVE_SCREEN_WIDTH_PERCENTAGE; + } + /** * Used as a workaround to ensure that the AppWidgetService receives the * PACKAGE_ADDED broadcast before updating widgets.