Merge "DO NOT MERGE. Fix logic for switching between overscroll and scroll modes." into gingerbread

This commit is contained in:
Mindy Pereira
2010-10-04 10:10:06 -07:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 3 deletions

View File

@@ -520,6 +520,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
*/ */
private int mLastPositionDistanceGuess; 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 * Interface definition for a callback to be invoked when the list or grid
* has been scrolled. * has been scrolled.
@@ -2238,6 +2243,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
if (overscrollMode == OVERSCROLL_ALWAYS || if (overscrollMode == OVERSCROLL_ALWAYS ||
(overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS &&
!contentFits())) { !contentFits())) {
mDirection = 0; // Reset when entering overscroll.
mTouchMode = TOUCH_MODE_OVERSCROLL; mTouchMode = TOUCH_MODE_OVERSCROLL;
if (rawDeltaY > 0) { if (rawDeltaY > 0) {
mEdgeGlowTop.onPull((float) overscroll / getHeight()); mEdgeGlowTop.onPull((float) overscroll / getHeight());
@@ -2261,9 +2267,13 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
final int oldScroll = mScrollY; final int oldScroll = mScrollY;
final int newScroll = oldScroll - incrementalDeltaY; final int newScroll = oldScroll - incrementalDeltaY;
int newDirection = y > mLastY ? 1 : -1;
if ((oldScroll >= 0 && newScroll <= 0) || if (mDirection == 0) {
(oldScroll <= 0 && newScroll >= 0)) { mDirection = newDirection;
}
if (mDirection != newDirection) {
// Coming back to 'real' list scrolling // Coming back to 'real' list scrolling
incrementalDeltaY = -newScroll; incrementalDeltaY = -newScroll;
mScrollY = 0; mScrollY = 0;
@@ -2308,6 +2318,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
} }
} }
mLastY = y; mLastY = y;
mDirection = newDirection;
} }
break; break;
} }

View File

@@ -90,7 +90,7 @@ public class EdgeGlow {
// How much dragging should effect the height of the glow image. // How much dragging should effect the height of the glow image.
// Number determined by user testing. // 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_EDGE_FACTOR = 8;
private static final int VELOCITY_GLOW_FACTOR = 16; private static final int VELOCITY_GLOW_FACTOR = 16;