diff options
| -rw-r--r-- | core/java/com/android/internal/widget/SwipeDismissLayout.java | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/core/java/com/android/internal/widget/SwipeDismissLayout.java b/core/java/com/android/internal/widget/SwipeDismissLayout.java index 674d084d4928..bcfa036ca2c9 100644 --- a/core/java/com/android/internal/widget/SwipeDismissLayout.java +++ b/core/java/com/android/internal/widget/SwipeDismissLayout.java @@ -35,7 +35,7 @@ import android.widget.FrameLayout; public class SwipeDismissLayout extends FrameLayout { private static final String TAG = "SwipeDismissLayout"; - private static final float DISMISS_MIN_PROGRESS = 0.6f; + private static final float DISMISS_MIN_DRAG_WIDTH_RATIO = .4f; public interface OnDismissedListener { void onDismissed(SwipeDismissLayout layout); @@ -244,7 +244,11 @@ public class SwipeDismissLayout extends FrameLayout { if (!mSwiping) { float deltaX = ev.getRawX() - mDownX; float deltaY = ev.getRawY() - mDownY; - mSwiping = deltaX > mSlop * 2 && Math.abs(deltaY) < mSlop * 2; + if ((deltaX * deltaX) + (deltaY * deltaY) > mSlop * mSlop) { + mSwiping = deltaX > mSlop * 2 && Math.abs(deltaY) < mSlop * 2; + } else { + mSwiping = false; + } } } @@ -254,12 +258,7 @@ public class SwipeDismissLayout extends FrameLayout { mVelocityTracker.addMovement(ev); mVelocityTracker.computeCurrentVelocity(1000); - float velocityX = mVelocityTracker.getXVelocity(); - float absVelocityX = Math.abs(velocityX); - float absVelocityY = Math.abs(mVelocityTracker.getYVelocity()); - - if (deltaX > (getWidth() * DISMISS_MIN_PROGRESS) && - absVelocityX < mMinFlingVelocity && + if (deltaX > (getWidth() * DISMISS_MIN_DRAG_WIDTH_RATIO) && ev.getRawX() >= mLastX) { mDismissed = true; } @@ -267,7 +266,7 @@ public class SwipeDismissLayout extends FrameLayout { // Check if the user tried to undo this. if (mDismissed && mSwiping) { // Check if the user's finger is actually back - if (deltaX < (getWidth() * DISMISS_MIN_PROGRESS)) { + if (deltaX < (getWidth() * DISMISS_MIN_DRAG_WIDTH_RATIO)) { mDismissed = false; } } |