diff options
author | 2011-09-16 21:40:49 -0700 | |
---|---|---|
committer | 2011-09-16 21:43:58 -0700 | |
commit | b0c71eb9f50ce06327fa6bb6219f0970e04fd856 (patch) | |
tree | d6b88ffc318ae23124c750faf2dc0f873e97e0cf | |
parent | 1afeea0f207f8b8b781f799f5d150b70495abb1a (diff) |
Can't stop the fling!
Bug: 5335420
Fixed a bug in VelocityTracker where the output velocity was
not being set to zero when not available.
Added a condition to ensure that the velocity is at least
the minimum fling velocity before continuing. If not, then
the user is trying to stop the fling and scroll more precisely.
Change-Id: I36634b0c3f7a9a09cf20c33f71d41163a8e33eed
-rw-r--r-- | core/java/android/widget/AbsListView.java | 3 | ||||
-rw-r--r-- | core/java/android/widget/OverScroller.java | 2 | ||||
-rw-r--r-- | libs/ui/Input.cpp | 2 |
3 files changed, 5 insertions, 2 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index cfe4cb720de7..ba89ef3e6cbd 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -3654,7 +3654,8 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te vt.computeCurrentVelocity(1000, mMaximumVelocity); final float yvel = -vt.getYVelocity(activeId); - if (scroller.isScrollingInDirection(0, yvel)) { + if (Math.abs(yvel) >= mMinimumVelocity + && scroller.isScrollingInDirection(0, yvel)) { // Keep the fling alive a little longer postDelayed(this, FLYWHEEL_TIMEOUT); } else { diff --git a/core/java/android/widget/OverScroller.java b/core/java/android/widget/OverScroller.java index 542a1ef2acda..e5719981e648 100644 --- a/core/java/android/widget/OverScroller.java +++ b/core/java/android/widget/OverScroller.java @@ -532,7 +532,7 @@ public class OverScroller { final int dx = mScrollerX.mFinal - mScrollerX.mStart; final int dy = mScrollerY.mFinal - mScrollerY.mStart; return !isFinished() && Math.signum(xvel) == Math.signum(dx) && - Math.signum(yvel) == Math.signum(dy); + Math.signum(yvel) == Math.signum(dy); } static class SplineOverScroller { diff --git a/libs/ui/Input.cpp b/libs/ui/Input.cpp index a5ba57dba78f..3de75bae9404 100644 --- a/libs/ui/Input.cpp +++ b/libs/ui/Input.cpp @@ -1020,6 +1020,8 @@ bool VelocityTracker::getVelocity(uint32_t id, float* outVx, float* outVy) const return true; } } + *outVx = 0; + *outVy = 0; return false; } |