Loading core/java/android/widget/AbsListView.java +26 −5 Original line number Diff line number Diff line Loading @@ -658,6 +658,18 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te super.setOverscrollMode(mode); } /** * @return true if all list content currently fits within the view boundaries */ private boolean contentFits() { final int childCount = getChildCount(); if (childCount != mItemCount) { return false; } return getChildAt(0).getTop() >= 0 && getChildAt(childCount - 1).getBottom() <= mBottom; } /** * Enables fast scrolling by letting the user quickly scroll through lists by * dragging the fast scroll thumb. The adapter attached to the list may want Loading Loading @@ -2221,8 +2233,12 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te // Don't allow overfling if we're at the edge. mVelocityTracker.clear(); } final int overscrollMode = getOverscrollMode(); if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && !contentFits())) { mTouchMode = TOUCH_MODE_OVERSCROLL; if (mEdgeGlowTop != null) { if (rawDeltaY > 0) { mEdgeGlowTop.onPull((float) overscroll / getHeight()); } else if (rawDeltaY < 0) { Loading Loading @@ -2275,7 +2291,10 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } else { overscrollBy(0, -incrementalDeltaY, 0, mScrollY, 0, 0, 0, mOverscrollDistance, true); if (mEdgeGlowTop != null) { final int overscrollMode = getOverscrollMode(); if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && !contentFits())) { if (rawDeltaY > 0) { mEdgeGlowTop.onPull((float) -incrementalDeltaY / getHeight()); } else if (rawDeltaY < 0) { Loading Loading @@ -2757,8 +2776,10 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te void edgeReached(int delta) { mScroller.notifyVerticalEdgeReached(mScrollY, 0, mOverflingDistance); final int overscrollMode = getOverscrollMode(); if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && !contentFits())) { mTouchMode = TOUCH_MODE_OVERFLING; if (mEdgeGlowTop != null) { final int vel = (int) mScroller.getCurrVelocity(); if (delta > 0) { mEdgeGlowTop.onAbsorb(vel); Loading core/java/android/widget/HorizontalScrollView.java +17 −9 Original line number Diff line number Diff line Loading @@ -538,6 +538,9 @@ public class HorizontalScrollView extends FrameLayout { } onScrollChanged(mScrollX, mScrollY, oldX, oldY); final int overscrollMode = getOverscrollMode(); if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && range > 0)) { final int pulledToX = oldX + deltaX; if (pulledToX < 0) { mEdgeGlowLeft.onPull((float) deltaX / getWidth()); Loading @@ -545,6 +548,7 @@ public class HorizontalScrollView extends FrameLayout { mEdgeGlowRight.onPull((float) deltaX / getWidth()); } } } break; case MotionEvent.ACTION_UP: if (mIsBeingDragged) { Loading Loading @@ -1091,12 +1095,16 @@ public class HorizontalScrollView extends FrameLayout { onScrollChanged(mScrollX, mScrollY, oldX, oldY); final int range = getScrollRange(); final int overscrollMode = getOverscrollMode(); if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && range > 0)) { if (x < 0 && oldX >= 0) { mEdgeGlowLeft.onAbsorb((int) mScroller.getCurrVelocity()); } else if (x > range && oldX <= range) { mEdgeGlowRight.onAbsorb((int) mScroller.getCurrVelocity()); } } } awakenScrollBars(); // Keep on drawing until the animation has finished. Loading core/java/android/widget/ScrollView.java +17 −9 Original line number Diff line number Diff line Loading @@ -533,6 +533,9 @@ public class ScrollView extends FrameLayout { } onScrollChanged(mScrollX, mScrollY, oldX, oldY); final int overscrollMode = getOverscrollMode(); if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && range > 0)) { final int pulledToY = oldY + deltaY; if (pulledToY < 0) { mEdgeGlowTop.onPull((float) deltaY / getHeight()); Loading @@ -540,6 +543,7 @@ public class ScrollView extends FrameLayout { mEdgeGlowBottom.onPull((float) deltaY / getHeight()); } } } break; case MotionEvent.ACTION_UP: if (mIsBeingDragged) { Loading Loading @@ -1090,12 +1094,16 @@ public class ScrollView extends FrameLayout { onScrollChanged(mScrollX, mScrollY, oldX, oldY); final int range = getScrollRange(); final int overscrollMode = getOverscrollMode(); if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && range > 0)) { if (y < 0 && oldY >= 0) { mEdgeGlowTop.onAbsorb((int) mScroller.getCurrVelocity()); } else if (y > range && oldY <= range) { mEdgeGlowBottom.onAbsorb((int) mScroller.getCurrVelocity()); } } } awakenScrollBars(); // Keep on drawing until the animation has finished. Loading Loading
core/java/android/widget/AbsListView.java +26 −5 Original line number Diff line number Diff line Loading @@ -658,6 +658,18 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te super.setOverscrollMode(mode); } /** * @return true if all list content currently fits within the view boundaries */ private boolean contentFits() { final int childCount = getChildCount(); if (childCount != mItemCount) { return false; } return getChildAt(0).getTop() >= 0 && getChildAt(childCount - 1).getBottom() <= mBottom; } /** * Enables fast scrolling by letting the user quickly scroll through lists by * dragging the fast scroll thumb. The adapter attached to the list may want Loading Loading @@ -2221,8 +2233,12 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te // Don't allow overfling if we're at the edge. mVelocityTracker.clear(); } final int overscrollMode = getOverscrollMode(); if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && !contentFits())) { mTouchMode = TOUCH_MODE_OVERSCROLL; if (mEdgeGlowTop != null) { if (rawDeltaY > 0) { mEdgeGlowTop.onPull((float) overscroll / getHeight()); } else if (rawDeltaY < 0) { Loading Loading @@ -2275,7 +2291,10 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } else { overscrollBy(0, -incrementalDeltaY, 0, mScrollY, 0, 0, 0, mOverscrollDistance, true); if (mEdgeGlowTop != null) { final int overscrollMode = getOverscrollMode(); if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && !contentFits())) { if (rawDeltaY > 0) { mEdgeGlowTop.onPull((float) -incrementalDeltaY / getHeight()); } else if (rawDeltaY < 0) { Loading Loading @@ -2757,8 +2776,10 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te void edgeReached(int delta) { mScroller.notifyVerticalEdgeReached(mScrollY, 0, mOverflingDistance); final int overscrollMode = getOverscrollMode(); if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && !contentFits())) { mTouchMode = TOUCH_MODE_OVERFLING; if (mEdgeGlowTop != null) { final int vel = (int) mScroller.getCurrVelocity(); if (delta > 0) { mEdgeGlowTop.onAbsorb(vel); Loading
core/java/android/widget/HorizontalScrollView.java +17 −9 Original line number Diff line number Diff line Loading @@ -538,6 +538,9 @@ public class HorizontalScrollView extends FrameLayout { } onScrollChanged(mScrollX, mScrollY, oldX, oldY); final int overscrollMode = getOverscrollMode(); if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && range > 0)) { final int pulledToX = oldX + deltaX; if (pulledToX < 0) { mEdgeGlowLeft.onPull((float) deltaX / getWidth()); Loading @@ -545,6 +548,7 @@ public class HorizontalScrollView extends FrameLayout { mEdgeGlowRight.onPull((float) deltaX / getWidth()); } } } break; case MotionEvent.ACTION_UP: if (mIsBeingDragged) { Loading Loading @@ -1091,12 +1095,16 @@ public class HorizontalScrollView extends FrameLayout { onScrollChanged(mScrollX, mScrollY, oldX, oldY); final int range = getScrollRange(); final int overscrollMode = getOverscrollMode(); if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && range > 0)) { if (x < 0 && oldX >= 0) { mEdgeGlowLeft.onAbsorb((int) mScroller.getCurrVelocity()); } else if (x > range && oldX <= range) { mEdgeGlowRight.onAbsorb((int) mScroller.getCurrVelocity()); } } } awakenScrollBars(); // Keep on drawing until the animation has finished. Loading
core/java/android/widget/ScrollView.java +17 −9 Original line number Diff line number Diff line Loading @@ -533,6 +533,9 @@ public class ScrollView extends FrameLayout { } onScrollChanged(mScrollX, mScrollY, oldX, oldY); final int overscrollMode = getOverscrollMode(); if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && range > 0)) { final int pulledToY = oldY + deltaY; if (pulledToY < 0) { mEdgeGlowTop.onPull((float) deltaY / getHeight()); Loading @@ -540,6 +543,7 @@ public class ScrollView extends FrameLayout { mEdgeGlowBottom.onPull((float) deltaY / getHeight()); } } } break; case MotionEvent.ACTION_UP: if (mIsBeingDragged) { Loading Loading @@ -1090,12 +1094,16 @@ public class ScrollView extends FrameLayout { onScrollChanged(mScrollX, mScrollY, oldX, oldY); final int range = getScrollRange(); final int overscrollMode = getOverscrollMode(); if (overscrollMode == OVERSCROLL_ALWAYS || (overscrollMode == OVERSCROLL_IF_CONTENT_SCROLLS && range > 0)) { if (y < 0 && oldY >= 0) { mEdgeGlowTop.onAbsorb((int) mScroller.getCurrVelocity()); } else if (y > range && oldY <= range) { mEdgeGlowBottom.onAbsorb((int) mScroller.getCurrVelocity()); } } } awakenScrollBars(); // Keep on drawing until the animation has finished. Loading