diff options
| author | Jorim Jaggi <jjaggi@google.com> | 2014-11-26 18:10:19 +0100 |
|---|---|---|
| committer | Jorim Jaggi <jjaggi@google.com> | 2014-11-26 18:14:50 +0100 |
| commit | 00d947bda0b9a2ea133dfd7b0e445245a0e2c23c (patch) | |
| tree | 5810a0f7eb8af30661dc6cb5f85d5e0ac5f41059 | |
| parent | 38499cf8a129b15fd526d45aad96657d96235abf (diff) | |
| download | frameworks_base-00d947bda0b9a2ea133dfd7b0e445245a0e2c23c.zip frameworks_base-00d947bda0b9a2ea133dfd7b0e445245a0e2c23c.tar.gz frameworks_base-00d947bda0b9a2ea133dfd7b0e445245a0e2c23c.tar.bz2 | |
Improve fling physics for recents
- Don't limit swipe out velocity
- Make sure we pick up all touch events in VelocityTracker
- When already scrolling and touching again, don't reset scroll
state, so we don't wait for the touch slop again to start
scrolling (this makes it more consistent with ScrollView).
Bug: 18536759
Change-Id: I1d43c77db78beec6d0b8c949e67141a2665de892
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/recents/views/SwipeHelper.java | 4 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java | 19 |
2 files changed, 7 insertions, 16 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/SwipeHelper.java b/packages/SystemUI/src/com/android/systemui/recents/views/SwipeHelper.java index fa44551..0428b48 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/SwipeHelper.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/SwipeHelper.java @@ -50,7 +50,6 @@ public class SwipeHelper { private float SWIPE_ESCAPE_VELOCITY = 100f; // dp/sec private int DEFAULT_ESCAPE_ANIMATION_DURATION = 75; // ms private int MAX_ESCAPE_ANIMATION_DURATION = 150; // ms - private int MAX_DISMISS_VELOCITY = 2000; // dp/sec private static final int SNAP_ANIM_LEN = SLOW_ANIMATIONS ? 1000 : 250; // ms public static float ALPHA_FADE_START = 0.15f; // fraction of thumbnail width @@ -350,8 +349,7 @@ public class SwipeHelper { } private void endSwipe(VelocityTracker velocityTracker) { - float maxVelocity = MAX_DISMISS_VELOCITY * mDensityScale; - velocityTracker.computeCurrentVelocity(1000 /* px/sec */, maxVelocity); + velocityTracker.computeCurrentVelocity(1000 /* px/sec */); float velocity = getVelocity(velocityTracker); float perpendicularVelocity = getPerpendicularVelocity(velocityTracker); float escapeVelocity = SWIPE_ESCAPE_VELOCITY * mDensityScale; diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java index 2b173a9..c59f82c 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java @@ -143,22 +143,21 @@ class TaskStackViewTouchHandler implements SwipeHelper.Callback { // Initialize the velocity tracker initOrResetVelocityTracker(); mVelocityTracker.addMovement(createMotionEventForStackScroll(ev)); - // Check if the scroller is finished yet - mIsScrolling = mScroller.isScrolling(); break; } case MotionEvent.ACTION_MOVE: { if (mActivePointerId == INACTIVE_POINTER_ID) break; + // Initialize the velocity tracker if necessary + initVelocityTrackerIfNotExists(); + mVelocityTracker.addMovement(createMotionEventForStackScroll(ev)); + int activePointerIndex = ev.findPointerIndex(mActivePointerId); int y = (int) ev.getY(activePointerIndex); int x = (int) ev.getX(activePointerIndex); if (Math.abs(y - mInitialMotionY) > mScrollTouchSlop) { // Save the touch move info mIsScrolling = true; - // Initialize the velocity tracker if necessary - initVelocityTrackerIfNotExists(); - mVelocityTracker.addMovement(createMotionEventForStackScroll(ev)); // Disallow parents from intercepting touch events final ViewParent parent = mSv.getParent(); if (parent != null) { @@ -237,6 +236,8 @@ class TaskStackViewTouchHandler implements SwipeHelper.Callback { case MotionEvent.ACTION_MOVE: { if (mActivePointerId == INACTIVE_POINTER_ID) break; + mVelocityTracker.addMovement(createMotionEventForStackScroll(ev)); + int activePointerIndex = ev.findPointerIndex(mActivePointerId); int x = (int) ev.getX(activePointerIndex); int y = (int) ev.getY(activePointerIndex); @@ -246,9 +247,6 @@ class TaskStackViewTouchHandler implements SwipeHelper.Callback { if (!mIsScrolling) { if (yTotal > mScrollTouchSlop) { mIsScrolling = true; - // Initialize the velocity tracker - initOrResetVelocityTracker(); - mVelocityTracker.addMovement(createMotionEventForStackScroll(ev)); // Disallow parents from intercepting touch events final ViewParent parent = mSv.getParent(); if (parent != null) { @@ -267,11 +265,6 @@ class TaskStackViewTouchHandler implements SwipeHelper.Callback { / maxOverScroll)); } mScroller.setStackScroll(curStackScroll + deltaP); - if (mScroller.isScrollOutOfBounds()) { - mVelocityTracker.clear(); - } else { - mVelocityTracker.addMovement(createMotionEventForStackScroll(ev)); - } } mLastMotionX = x; mLastMotionY = y; |
