diff options
author | 2010-10-04 10:10:06 -0700 | |
---|---|---|
committer | 2010-10-04 10:10:06 -0700 | |
commit | 106950f20bd352ed72ddf4490b2e19d305e36a74 (patch) | |
tree | 4b3190aad1d0f11c63867c892ccc691b9e898631 | |
parent | d8f1a540162e16d88cae9a1e8ec58cba68adf6e2 (diff) | |
parent | e6c4747276cd4e7f0243bcd8ea50ad3e66609fef (diff) |
Merge "DO NOT MERGE. Fix logic for switching between overscroll and scroll modes." into gingerbread
-rw-r--r-- | core/java/android/widget/AbsListView.java | 15 | ||||
-rw-r--r-- | core/java/android/widget/EdgeGlow.java | 2 |
2 files changed, 14 insertions, 3 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 8f5c35ea7425..455885451fc5 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -521,6 +521,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te private int mLastPositionDistanceGuess; /** + * Used for determining when to cancel out of overscroll. + */ + private int mDirection = 0; + + /** * Interface definition for a callback to be invoked when the list or grid * has been scrolled. */ @@ -2238,6 +2243,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && !contentFits())) { + mDirection = 0; // Reset when entering overscroll. mTouchMode = TOUCH_MODE_OVERSCROLL; if (rawDeltaY > 0) { mEdgeGlowTop.onPull((float) overscroll / getHeight()); @@ -2261,9 +2267,13 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te final int oldScroll = mScrollY; final int newScroll = oldScroll - incrementalDeltaY; + int newDirection = y > mLastY ? 1 : -1; + + if (mDirection == 0) { + mDirection = newDirection; + } - if ((oldScroll >= 0 && newScroll <= 0) || - (oldScroll <= 0 && newScroll >= 0)) { + if (mDirection != newDirection) { // Coming back to 'real' list scrolling incrementalDeltaY = -newScroll; mScrollY = 0; @@ -2308,6 +2318,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } } mLastY = y; + mDirection = newDirection; } break; } diff --git a/core/java/android/widget/EdgeGlow.java b/core/java/android/widget/EdgeGlow.java index e24f49543496..1f7daabd426a 100644 --- a/core/java/android/widget/EdgeGlow.java +++ b/core/java/android/widget/EdgeGlow.java @@ -90,7 +90,7 @@ public class EdgeGlow { // How much dragging should effect the height of the glow image. // Number determined by user testing. - private static final int PULL_DISTANCE_GLOW_FACTOR = 10; + private static final int PULL_DISTANCE_GLOW_FACTOR = 5; private static final int VELOCITY_EDGE_FACTOR = 8; private static final int VELOCITY_GLOW_FACTOR = 16; |