From d8fb3ac4b8e0673c9673abe1fc096806af798403 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Tue, 5 Jan 2016 15:37:42 +0100 Subject: [PATCH] Start moving divider only after passing touch slop So there is a clear distinction between grabbing it and start moving it. Change-Id: I51b50220bd35d8040d0c11f131918d9741cd8403 --- .../com/android/systemui/stackdivider/DividerView.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java index 4c83b51e32a0..109cf4726101 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java @@ -36,6 +36,7 @@ import android.view.PointerIcon; import android.view.VelocityTracker; import android.view.View; import android.view.View.OnTouchListener; +import android.view.ViewConfiguration; import android.view.ViewTreeObserver.InternalInsetsInfo; import android.view.ViewTreeObserver.OnComputeInternalInsetsListener; import android.view.Window; @@ -81,6 +82,8 @@ public class DividerView extends FrameLayout implements OnTouchListener, private int mStartPosition; private int mDockSide; private final int[] mTempInt2 = new int[2]; + private boolean mMoving; + private int mTouchSlop; private int mDividerInsets; private int mDisplayWidth; @@ -136,6 +139,7 @@ public class DividerView extends FrameLayout implements OnTouchListener, R.dimen.docked_stack_divider_lift_elevation); mFastOutSlowInInterpolator = AnimationUtils.loadInterpolator(getContext(), android.R.interpolator.fast_out_slow_in); + mTouchSlop = ViewConfiguration.get(mContext).getScaledTouchSlop(); mFlingAnimationUtils = new FlingAnimationUtils(getContext(), 0.3f); updateDisplayInfo(); boolean landscape = getResources().getConfiguration().orientation @@ -203,12 +207,21 @@ public class DividerView extends FrameLayout implements OnTouchListener, } else { mStartPosition = mTempInt2[0] + mDividerInsets; } + mMoving = false; return result; case MotionEvent.ACTION_MOVE: mVelocityTracker.addMovement(event); int x = (int) event.getX(); int y = (int) event.getY(); - if (mDockSide != WindowManager.DOCKED_INVALID) { + boolean exceededTouchSlop = + isHorizontalDivision() && Math.abs(y - mStartY) > mTouchSlop + || (!isHorizontalDivision() && Math.abs(x - mStartX) > mTouchSlop); + if (!mMoving && exceededTouchSlop) { + mStartX = x; + mStartY = y; + mMoving = true; + } + if (mMoving && mDockSide != WindowManager.DOCKED_INVALID) { int position = calculatePosition(x, y); SnapTarget snapTarget = mSnapAlgorithm.calculateSnapTarget(position, 0 /* velocity */); @@ -226,6 +239,7 @@ public class DividerView extends FrameLayout implements OnTouchListener, int position = calculatePosition(x, y); stopDragging(position, isHorizontalDivision() ? mVelocityTracker.getYVelocity() : mVelocityTracker.getXVelocity()); + mMoving = false; break; } return true; -- 2.11.0