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
This commit is contained in:
Andras Kloczl
2022-03-30 17:25:54 +01:00
parent 4ad53f1268
commit 07111f25f4
3 changed files with 29 additions and 12 deletions

View File

@@ -1195,8 +1195,8 @@ public abstract class PagedView<T extends View & PageIndicator> 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<T extends View & PageIndicator> 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;