Update mIsBeingDragged in onTouchEvent(ACTION_DOWN)
The logic to keep mIsBeingDragged when touching down during a scroll
animation was in onInterceptTouchEvent(), which we were bypassing by
using onTouchEvent() directly. Now we update mIsBeingDragged on touch
down in both onInterceptTouchEvent() and in onTouchEvent().
Bug: 141024521
Change-Id: I77abd4c36f3ccee27e160c817dadb3923e6cfc06
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index bbb3915..70b55a4 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -890,23 +890,7 @@
mTotalMotionX = 0;
mActivePointerId = ev.getPointerId(0);
- /*
- * If being flinged and user touches the screen, initiate drag;
- * otherwise don't. mScroller.isFinished should be false when
- * being flinged.
- */
- final int xDist = Math.abs(mScroller.getFinalPos() - mScroller.getCurrPos());
- final boolean finishedScrolling = (mScroller.isFinished() || xDist < mTouchSlop / 3);
-
- if (finishedScrolling) {
- mIsBeingDragged = false;
- if (!mScroller.isFinished() && !mFreeScroll) {
- setCurrentPage(getNextPage());
- pageEndTransition();
- }
- } else {
- mIsBeingDragged = true;
- }
+ updateIsBeingDraggedOnTouchDown();
break;
}
@@ -929,6 +913,25 @@
return mIsBeingDragged;
}
+ /**
+ * If being flinged and user touches the screen, initiate drag; otherwise don't.
+ */
+ private void updateIsBeingDraggedOnTouchDown() {
+ // mScroller.isFinished should be false when being flinged.
+ final int xDist = Math.abs(mScroller.getFinalPos() - mScroller.getCurrPos());
+ final boolean finishedScrolling = (mScroller.isFinished() || xDist < mTouchSlop / 3);
+
+ if (finishedScrolling) {
+ mIsBeingDragged = false;
+ if (!mScroller.isFinished() && !mFreeScroll) {
+ setCurrentPage(getNextPage());
+ pageEndTransition();
+ }
+ } else {
+ mIsBeingDragged = true;
+ }
+ }
+
public boolean isHandlingTouch() {
return mIsBeingDragged;
}
@@ -1104,6 +1107,8 @@
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
+ updateIsBeingDraggedOnTouchDown();
+
/*
* If being flinged and user touches, stop the fling. isFinished
* will be false if being flinged.