DO NOT MERGE. Fix logic for switching between overscroll and scroll modes.

The issue here was originally that webview was showing twice
as intense of an effect for edge glow as lists. The root cause
was that abslistview was calling onPull half as often as webview. This
occurred because every time an action_move came into the touch handler
for abslistview when it was in overscroll, the mode was ALWAYS changed
back to scroll mode. Therefore, half the action_move events were
essentially being eating by the abslistview state machine.
After fixing that issue, needed to decrease the intensity of the effect
for webview and abslistview by halving the PULL_DISTANCE_GLOW_FACTOR.

Change-Id: I5dbdf4f1219f3bb157a71d4fccf8fa42e2abe047
This commit is contained in:
Mindy Pereira
2010-10-01 16:37:06 -07:00
parent 2942391801
commit e6c4747276
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;
/**
* 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 ((oldScroll >= 0 && newScroll <= 0) ||
(oldScroll <= 0 && newScroll >= 0)) {
if (mDirection == 0) {
mDirection = newDirection;
}
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;
}

View File

@@ -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;