summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adam Powell <adamp@google.com> 2010-01-28 21:24:10 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2010-01-28 21:24:10 -0800
commita9938c4bf491cdf0df3b6b1fe41e0e3ef5a2dfbb (patch)
tree3179bf1859d1cbe7c00428b871f999834122f6a1
parent05d72117f9b449914979b008c17edd6c5645565b (diff)
parentf54460576e88d7531b171575d37264dfe0a34f33 (diff)
Merge "Don't bounce programmatic scrolls of ScrollView and HorizontalScrollView."
-rw-r--r--core/java/android/widget/HorizontalScrollView.java11
-rw-r--r--core/java/android/widget/ScrollView.java11
2 files changed, 14 insertions, 8 deletions
diff --git a/core/java/android/widget/HorizontalScrollView.java b/core/java/android/widget/HorizontalScrollView.java
index 8c3923145e24..0078fecdaa72 100644
--- a/core/java/android/widget/HorizontalScrollView.java
+++ b/core/java/android/widget/HorizontalScrollView.java
@@ -821,10 +821,13 @@ public class HorizontalScrollView extends FrameLayout {
}
long duration = AnimationUtils.currentAnimationTimeMillis() - mLastScroll;
if (duration > ANIMATED_SCROLL_GAP) {
- int width = getWidth() - mPaddingRight - mPaddingLeft;
- int right = getChildAt(0).getWidth();
- mScroller.startScroll(mScrollX, mScrollY, dx, dy,
- 0, Math.max(0, right - width), 0, 0);
+ final int width = getWidth() - mPaddingRight - mPaddingLeft;
+ final int right = getChildAt(0).getWidth();
+ final int maxX = Math.max(0, right - width);
+ final int scrollX = mScrollX;
+ dx = Math.max(0, Math.min(scrollX + dx, maxX)) - scrollX;
+
+ mScroller.startScroll(scrollX, mScrollY, dx, 0);
awakenScrollBars(mScroller.getDuration());
invalidate();
} else {
diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java
index 1a50f8589eb9..4a1d8712ca2c 100644
--- a/core/java/android/widget/ScrollView.java
+++ b/core/java/android/widget/ScrollView.java
@@ -823,10 +823,13 @@ public class ScrollView extends FrameLayout {
}
long duration = AnimationUtils.currentAnimationTimeMillis() - mLastScroll;
if (duration > ANIMATED_SCROLL_GAP) {
- int height = getHeight() - mPaddingBottom - mPaddingTop;
- int bottom = getChildAt(0).getHeight();
- mScroller.startScroll(mScrollX, mScrollY, dx, dy,
- 0, 0, 0, Math.max(0, bottom - height));
+ final int height = getHeight() - mPaddingBottom - mPaddingTop;
+ final int bottom = getChildAt(0).getHeight();
+ final int maxY = Math.max(0, bottom - height);
+ final int scrollY = mScrollY;
+ dy = Math.max(0, Math.min(scrollY + dy, maxY)) - scrollY;
+
+ mScroller.startScroll(mScrollX, scrollY, 0, dy);
awakenScrollBars(mScroller.getDuration());
invalidate();
} else {