summaryrefslogtreecommitdiffstats
path: root/core/java/android/widget/ScrollView.java
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2014-05-02 10:04:38 -0700
committerAdam Powell <adamp@google.com>2014-05-02 17:16:04 -0700
commit96d62aff0f97557bc15de98e145d9345288d060c (patch)
tree8e985f193fe9ccf476fe55dfed4c820fa5e2eef3 /core/java/android/widget/ScrollView.java
parent5b8b92002230525317d5832a84d7813467594967 (diff)
downloadframeworks_base-96d62aff0f97557bc15de98e145d9345288d060c.zip
frameworks_base-96d62aff0f97557bc15de98e145d9345288d060c.tar.gz
frameworks_base-96d62aff0f97557bc15de98e145d9345288d060c.tar.bz2
ListViews in ScrollViews and ScrollViews in ListViews
Dogs and cats, living together, mass hysteria! Add support for nested scrolling to AbsListView, granting the ability to both ListView and GridView. Change-Id: Iae5c0518c5cebe41927720a7a27916ef13ca706e
Diffstat (limited to 'core/java/android/widget/ScrollView.java')
-rw-r--r--core/java/android/widget/ScrollView.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java
index 3e46f68..8dfef25a 100644
--- a/core/java/android/widget/ScrollView.java
+++ b/core/java/android/widget/ScrollView.java
@@ -583,7 +583,8 @@ public class ScrollView extends FrameLayout {
@Override
public boolean onTouchEvent(MotionEvent ev) {
initVelocityTrackerIfNotExists();
- mVelocityTracker.addMovement(ev);
+
+ MotionEvent vtev = MotionEvent.obtain(ev);
final int action = ev.getAction();
@@ -628,6 +629,7 @@ public class ScrollView extends FrameLayout {
int deltaY = mLastMotionY - y;
if (dispatchNestedPreScroll(0, deltaY, mScrollConsumed, mScrollOffset)) {
deltaY -= mScrollConsumed[1] + mScrollOffset[1];
+ vtev.offsetLocation(0, mScrollOffset[1]);
}
if (!mIsBeingDragged && Math.abs(deltaY) > mTouchSlop) {
final ViewParent parent = getParent();
@@ -663,6 +665,7 @@ public class ScrollView extends FrameLayout {
final int unconsumedY = deltaY - scrolledDeltaY;
if (dispatchNestedScroll(0, scrolledDeltaY, 0, unconsumedY, mScrollOffset)) {
mLastMotionY -= mScrollOffset[1];
+ vtev.offsetLocation(0, mScrollOffset[1]);
} else if (canOverscroll) {
final int pulledToY = oldY + deltaY;
if (pulledToY < 0) {
@@ -720,6 +723,11 @@ public class ScrollView extends FrameLayout {
mLastMotionY = (int) ev.getY(ev.findPointerIndex(mActivePointerId));
break;
}
+
+ if (mVelocityTracker != null) {
+ mVelocityTracker.addMovement(vtev);
+ }
+ vtev.recycle();
return true;
}