summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Kwan <mkwan@google.com>2017-02-14 22:53:41 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-02-14 22:53:41 +0000
commit83b072c48c0008312db5666f43b9062c43416455 (patch)
tree8732e62443a545a26dc52884435ddce5482f677c
parentd043a840f7f12ce2c54e7d4564a6ac9cfa24dd17 (diff)
parentc61cd1a6354bce0a34f3a44989b4412bef71b7bd (diff)
downloadbase-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.java17
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;