Loading core/java/android/widget/AbsListView.java +8 −9 Original line number Diff line number Diff line Loading @@ -3574,28 +3574,27 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te private void scrollIfNeeded(int x, int y, MotionEvent vtev) { int rawDeltaY = y - mMotionY; int scrollOffsetCorrection = 0; int scrollConsumedCorrection = 0; if (mLastY == Integer.MIN_VALUE) { rawDeltaY -= mMotionCorrection; } if (dispatchNestedPreScroll(0, mLastY != Integer.MIN_VALUE ? mLastY - y : -rawDeltaY, mScrollConsumed, mScrollOffset)) { int incrementalDeltaY = mLastY != Integer.MIN_VALUE ? y - mLastY : rawDeltaY; // First allow releasing existing overscroll effect: incrementalDeltaY = releaseGlow(incrementalDeltaY, x); if (dispatchNestedPreScroll(0, -incrementalDeltaY, mScrollConsumed, mScrollOffset)) { rawDeltaY += mScrollConsumed[1]; scrollOffsetCorrection = -mScrollOffset[1]; scrollConsumedCorrection = mScrollConsumed[1]; incrementalDeltaY += mScrollConsumed[1]; if (vtev != null) { vtev.offsetLocation(0, mScrollOffset[1]); mNestedYOffset += mScrollOffset[1]; } } final int deltaY = rawDeltaY; int incrementalDeltaY = mLastY != Integer.MIN_VALUE ? y - mLastY + scrollConsumedCorrection : deltaY; int lastYCorrection = 0; // First allow releasing existing overscroll effect: incrementalDeltaY = releaseGlow(incrementalDeltaY, x); if (mTouchMode == TOUCH_MODE_SCROLL) { if (PROFILE_SCROLLING) { if (!mScrollProfilingStarted) { Loading core/java/android/widget/EdgeEffect.java +9 −2 Original line number Diff line number Diff line Loading @@ -342,6 +342,9 @@ public class EdgeEffect { mGlowAlphaFinish = mGlowAlpha; mGlowScaleYFinish = mGlowScaleY; if (mEdgeEffectType == TYPE_STRETCH && mDistance == 0) { mState = STATE_IDLE; } } /** Loading Loading @@ -739,8 +742,12 @@ public class EdgeEffect { private boolean isAtEquilibrium() { double displacement = mDistance * mHeight; // in pixels double velocity = mVelocity; return Math.abs(velocity) < VELOCITY_THRESHOLD && Math.abs(displacement) < VALUE_THRESHOLD; // Don't allow displacement to drop below 0. We don't want it stretching the opposite // direction if it is flung that way. We also want to stop the animation as soon as // it gets very close to its destination. return displacement < 0 || (Math.abs(velocity) < VELOCITY_THRESHOLD && displacement < VALUE_THRESHOLD); } private float dampStretchVector(float normalizedVec) { Loading Loading
core/java/android/widget/AbsListView.java +8 −9 Original line number Diff line number Diff line Loading @@ -3574,28 +3574,27 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te private void scrollIfNeeded(int x, int y, MotionEvent vtev) { int rawDeltaY = y - mMotionY; int scrollOffsetCorrection = 0; int scrollConsumedCorrection = 0; if (mLastY == Integer.MIN_VALUE) { rawDeltaY -= mMotionCorrection; } if (dispatchNestedPreScroll(0, mLastY != Integer.MIN_VALUE ? mLastY - y : -rawDeltaY, mScrollConsumed, mScrollOffset)) { int incrementalDeltaY = mLastY != Integer.MIN_VALUE ? y - mLastY : rawDeltaY; // First allow releasing existing overscroll effect: incrementalDeltaY = releaseGlow(incrementalDeltaY, x); if (dispatchNestedPreScroll(0, -incrementalDeltaY, mScrollConsumed, mScrollOffset)) { rawDeltaY += mScrollConsumed[1]; scrollOffsetCorrection = -mScrollOffset[1]; scrollConsumedCorrection = mScrollConsumed[1]; incrementalDeltaY += mScrollConsumed[1]; if (vtev != null) { vtev.offsetLocation(0, mScrollOffset[1]); mNestedYOffset += mScrollOffset[1]; } } final int deltaY = rawDeltaY; int incrementalDeltaY = mLastY != Integer.MIN_VALUE ? y - mLastY + scrollConsumedCorrection : deltaY; int lastYCorrection = 0; // First allow releasing existing overscroll effect: incrementalDeltaY = releaseGlow(incrementalDeltaY, x); if (mTouchMode == TOUCH_MODE_SCROLL) { if (PROFILE_SCROLLING) { if (!mScrollProfilingStarted) { Loading
core/java/android/widget/EdgeEffect.java +9 −2 Original line number Diff line number Diff line Loading @@ -342,6 +342,9 @@ public class EdgeEffect { mGlowAlphaFinish = mGlowAlpha; mGlowScaleYFinish = mGlowScaleY; if (mEdgeEffectType == TYPE_STRETCH && mDistance == 0) { mState = STATE_IDLE; } } /** Loading Loading @@ -739,8 +742,12 @@ public class EdgeEffect { private boolean isAtEquilibrium() { double displacement = mDistance * mHeight; // in pixels double velocity = mVelocity; return Math.abs(velocity) < VELOCITY_THRESHOLD && Math.abs(displacement) < VALUE_THRESHOLD; // Don't allow displacement to drop below 0. We don't want it stretching the opposite // direction if it is flung that way. We also want to stop the animation as soon as // it gets very close to its destination. return displacement < 0 || (Math.abs(velocity) < VELOCITY_THRESHOLD && displacement < VALUE_THRESHOLD); } private float dampStretchVector(float normalizedVec) { Loading