diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/widget/AbsListView.java | 20 | ||||
| -rw-r--r-- | core/java/android/widget/ScrollView.java | 8 |
2 files changed, 18 insertions, 10 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index aa0b94f0208c..129476c91050 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -3857,13 +3857,17 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te firstChildTop == contentTop - mOverscrollDistance) || (mFirstPosition + childCount == mItemCount && lastChildBottom == contentBottom + mOverscrollDistance))) { - if (mFlingRunnable == null) { - mFlingRunnable = new FlingRunnable(); + if (!dispatchNestedPreFling(0, -initialVelocity)) { + if (mFlingRunnable == null) { + mFlingRunnable = new FlingRunnable(); + } + reportScrollStateChange(OnScrollListener.SCROLL_STATE_FLING); + mFlingRunnable.start(-initialVelocity); + dispatchNestedFling(0, -initialVelocity, true); + } else { + mTouchMode = TOUCH_MODE_REST; + reportScrollStateChange(OnScrollListener.SCROLL_STATE_IDLE); } - reportScrollStateChange(OnScrollListener.SCROLL_STATE_FLING); - - mFlingRunnable.start(-initialVelocity); - dispatchNestedFling(0, -initialVelocity, true); } else { mTouchMode = TOUCH_MODE_REST; reportScrollStateChange(OnScrollListener.SCROLL_STATE_IDLE); @@ -4029,7 +4033,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te if (mFlingRunnable == null) { mFlingRunnable = new FlingRunnable(); } - mFlingRunnable.start((int) velocityY); + if (!dispatchNestedPreFling(0, velocityY)) { + mFlingRunnable.start((int) velocityY); + } return true; } return dispatchNestedFling(velocityX, velocityY, consumed); diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java index fd048908260c..dd312a664c96 100644 --- a/core/java/android/widget/ScrollView.java +++ b/core/java/android/widget/ScrollView.java @@ -1577,9 +1577,11 @@ public class ScrollView extends FrameLayout { private void flingWithNestedDispatch(int velocityY) { final boolean canFling = (mScrollY > 0 || velocityY > 0) && (mScrollY < getScrollRange() || velocityY < 0); - dispatchNestedFling(0, velocityY, canFling); - if (canFling) { - fling(velocityY); + if (!dispatchNestedPreFling(0, velocityY)) { + dispatchNestedFling(0, velocityY, canFling); + if (canFling) { + fling(velocityY); + } } } |
