diff options
author | Mindy Pereira <mindyp@google.com> | 2010-10-04 10:10:06 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-10-04 10:10:06 -0700 |
commit | 106950f20bd352ed72ddf4490b2e19d305e36a74 (patch) | |
tree | 4b3190aad1d0f11c63867c892ccc691b9e898631 /core | |
parent | d8f1a540162e16d88cae9a1e8ec58cba68adf6e2 (diff) | |
parent | e6c4747276cd4e7f0243bcd8ea50ad3e66609fef (diff) | |
download | frameworks_base-106950f20bd352ed72ddf4490b2e19d305e36a74.zip frameworks_base-106950f20bd352ed72ddf4490b2e19d305e36a74.tar.gz frameworks_base-106950f20bd352ed72ddf4490b2e19d305e36a74.tar.bz2 |
Merge "DO NOT MERGE. Fix logic for switching between overscroll and scroll modes." into gingerbread
Diffstat (limited to 'core')
-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 8f5c35e..4558854 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 e24f495..1f7daab 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; |