summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/java/android/widget/AbsListView.java15
-rw-r--r--core/java/android/widget/EdgeGlow.java2
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;