diff options
author | Michael Kwan <mkwan@google.com> | 2017-02-14 22:53:41 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-02-14 22:53:41 +0000 |
commit | 83b072c48c0008312db5666f43b9062c43416455 (patch) | |
tree | 8732e62443a545a26dc52884435ddce5482f677c | |
parent | d043a840f7f12ce2c54e7d4564a6ac9cfa24dd17 (diff) | |
parent | c61cd1a6354bce0a34f3a44989b4412bef71b7bd (diff) | |
download | base-83b072c48c0008312db5666f43b9062c43416455.tar.gz |
Merge "Fix incorrect values for VelocityTracker in SwipeDismissLayout." into cw-f-dev
am: c61cd1a635
Change-Id: Ib1cff2ace082862c2a1c250170453b989f6697df
-rw-r--r-- | core/java/com/android/internal/widget/SwipeDismissLayout.java | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/core/java/com/android/internal/widget/SwipeDismissLayout.java b/core/java/com/android/internal/widget/SwipeDismissLayout.java index 261fa4327494..6d814bf14bc0 100644 --- a/core/java/com/android/internal/widget/SwipeDismissLayout.java +++ b/core/java/com/android/internal/widget/SwipeDismissLayout.java @@ -79,7 +79,6 @@ public class SwipeDismissLayout extends FrameLayout { private boolean mDismissed; private boolean mDiscardIntercept; private VelocityTracker mVelocityTracker; - private float mTranslationX; private boolean mBlockGesture = false; private boolean mActivityTranslucencyConverted = false; @@ -166,8 +165,10 @@ public class SwipeDismissLayout extends FrameLayout { return super.onInterceptTouchEvent(ev); } - // offset because the view is translated during swipe - ev.offsetLocation(mTranslationX, 0); + // Offset because the view is translated during swipe, match X with raw X. Active touch + // coordinates are mostly used by the velocity tracker, so offset it to match the raw + // coordinates which is what is primarily used elsewhere. + ev.offsetLocation(ev.getRawX() - ev.getX(), 0); switch (ev.getActionMasked()) { case MotionEvent.ACTION_DOWN: @@ -232,8 +233,12 @@ public class SwipeDismissLayout extends FrameLayout { if (mVelocityTracker == null || !mDismissable) { return super.onTouchEvent(ev); } - // offset because the view is translated during swipe - ev.offsetLocation(mTranslationX, 0); + + // Offset because the view is translated during swipe, match X with raw X. Active touch + // coordinates are mostly used by the velocity tracker, so offset it to match the raw + // coordinates which is what is primarily used elsewhere. + ev.offsetLocation(ev.getRawX() - ev.getX(), 0); + switch (ev.getActionMasked()) { case MotionEvent.ACTION_UP: updateDismiss(ev); @@ -266,7 +271,6 @@ public class SwipeDismissLayout extends FrameLayout { } private void setProgress(float deltaX) { - mTranslationX = deltaX; if (mProgressListener != null && deltaX >= 0) { mProgressListener.onSwipeProgressChanged( this, progressToAlpha(deltaX / getWidth()), deltaX); @@ -300,7 +304,6 @@ public class SwipeDismissLayout extends FrameLayout { mVelocityTracker.recycle(); } mVelocityTracker = null; - mTranslationX = 0; mDownX = 0; mLastX = Integer.MIN_VALUE; mDownY = 0; |