Loading core/java/android/widget/AbsListView.java +306 −289 Original line number Diff line number Diff line Loading @@ -3308,6 +3308,67 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { onTouchDown(ev); break; } case MotionEvent.ACTION_MOVE: { onTouchMove(ev); break; } case MotionEvent.ACTION_UP: { onTouchUp(ev); break; } case MotionEvent.ACTION_CANCEL: { onTouchCancel(); break; } case MotionEvent.ACTION_POINTER_UP: { onSecondaryPointerUp(ev); final int x = mMotionX; final int y = mMotionY; final int motionPosition = pointToPosition(x, y); if (motionPosition >= 0) { // Remember where the motion event started v = getChildAt(motionPosition - mFirstPosition); mMotionViewOriginalTop = v.getTop(); mMotionPosition = motionPosition; } mLastY = y; break; } case MotionEvent.ACTION_POINTER_DOWN: { // New pointers take over dragging duties final int index = ev.getActionIndex(); final int id = ev.getPointerId(index); final int x = (int) ev.getX(index); final int y = (int) ev.getY(index); mMotionCorrection = 0; mActivePointerId = id; mMotionX = x; mMotionY = y; final int motionPosition = pointToPosition(x, y); if (motionPosition >= 0) { // Remember where the motion event started v = getChildAt(motionPosition - mFirstPosition); mMotionViewOriginalTop = v.getTop(); mMotionPosition = motionPosition; } mLastY = y; break; } } return true; } private void onTouchDown(MotionEvent ev) { View v; switch (mTouchMode) { case TOUCH_MODE_OVERFLING: { mFlingRunnable.endFling(); Loading Loading @@ -3370,10 +3431,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te removeCallbacks(mPendingCheckForTap); } } break; } case MotionEvent.ACTION_MOVE: { private void onTouchMove(MotionEvent ev) { int pointerIndex = ev.findPointerIndex(mActivePointerId); if (pointerIndex == -1) { pointerIndex = 0; Loading @@ -3400,10 +3460,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te scrollIfNeeded(y); break; } break; } case MotionEvent.ACTION_UP: { private void onTouchUp(MotionEvent ev) { switch (mTouchMode) { case TOUCH_MODE_DOWN: case TOUCH_MODE_TAP: Loading Loading @@ -3470,7 +3529,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mTouchMode = TOUCH_MODE_REST; updateSelectorState(); } return true; return; } else if (!mDataChanged && mAdapter.isEnabled(motionPosition)) { performClick.run(); } Loading Loading @@ -3576,10 +3635,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mScrollStrictSpan.finish(); mScrollStrictSpan = null; } break; } case MotionEvent.ACTION_CANCEL: { private void onTouchCancel() { switch (mTouchMode) { case TOUCH_MODE_OVERSCROLL: if (mFlingRunnable == null) { Loading Loading @@ -3614,47 +3672,6 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mEdgeGlowBottom.onRelease(); } mActivePointerId = INVALID_POINTER; break; } case MotionEvent.ACTION_POINTER_UP: { onSecondaryPointerUp(ev); final int x = mMotionX; final int y = mMotionY; final int motionPosition = pointToPosition(x, y); if (motionPosition >= 0) { // Remember where the motion event started v = getChildAt(motionPosition - mFirstPosition); mMotionViewOriginalTop = v.getTop(); mMotionPosition = motionPosition; } mLastY = y; break; } case MotionEvent.ACTION_POINTER_DOWN: { // New pointers take over dragging duties final int index = ev.getActionIndex(); final int id = ev.getPointerId(index); final int x = (int) ev.getX(index); final int y = (int) ev.getY(index); mMotionCorrection = 0; mActivePointerId = id; mMotionX = x; mMotionY = y; final int motionPosition = pointToPosition(x, y); if (motionPosition >= 0) { // Remember where the motion event started v = getChildAt(motionPosition - mFirstPosition); mMotionViewOriginalTop = v.getTop(); mMotionPosition = motionPosition; } mLastY = y; break; } } return true; } @Override Loading Loading
core/java/android/widget/AbsListView.java +306 −289 Original line number Diff line number Diff line Loading @@ -3308,6 +3308,67 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { onTouchDown(ev); break; } case MotionEvent.ACTION_MOVE: { onTouchMove(ev); break; } case MotionEvent.ACTION_UP: { onTouchUp(ev); break; } case MotionEvent.ACTION_CANCEL: { onTouchCancel(); break; } case MotionEvent.ACTION_POINTER_UP: { onSecondaryPointerUp(ev); final int x = mMotionX; final int y = mMotionY; final int motionPosition = pointToPosition(x, y); if (motionPosition >= 0) { // Remember where the motion event started v = getChildAt(motionPosition - mFirstPosition); mMotionViewOriginalTop = v.getTop(); mMotionPosition = motionPosition; } mLastY = y; break; } case MotionEvent.ACTION_POINTER_DOWN: { // New pointers take over dragging duties final int index = ev.getActionIndex(); final int id = ev.getPointerId(index); final int x = (int) ev.getX(index); final int y = (int) ev.getY(index); mMotionCorrection = 0; mActivePointerId = id; mMotionX = x; mMotionY = y; final int motionPosition = pointToPosition(x, y); if (motionPosition >= 0) { // Remember where the motion event started v = getChildAt(motionPosition - mFirstPosition); mMotionViewOriginalTop = v.getTop(); mMotionPosition = motionPosition; } mLastY = y; break; } } return true; } private void onTouchDown(MotionEvent ev) { View v; switch (mTouchMode) { case TOUCH_MODE_OVERFLING: { mFlingRunnable.endFling(); Loading Loading @@ -3370,10 +3431,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te removeCallbacks(mPendingCheckForTap); } } break; } case MotionEvent.ACTION_MOVE: { private void onTouchMove(MotionEvent ev) { int pointerIndex = ev.findPointerIndex(mActivePointerId); if (pointerIndex == -1) { pointerIndex = 0; Loading @@ -3400,10 +3460,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te scrollIfNeeded(y); break; } break; } case MotionEvent.ACTION_UP: { private void onTouchUp(MotionEvent ev) { switch (mTouchMode) { case TOUCH_MODE_DOWN: case TOUCH_MODE_TAP: Loading Loading @@ -3470,7 +3529,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mTouchMode = TOUCH_MODE_REST; updateSelectorState(); } return true; return; } else if (!mDataChanged && mAdapter.isEnabled(motionPosition)) { performClick.run(); } Loading Loading @@ -3576,10 +3635,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mScrollStrictSpan.finish(); mScrollStrictSpan = null; } break; } case MotionEvent.ACTION_CANCEL: { private void onTouchCancel() { switch (mTouchMode) { case TOUCH_MODE_OVERSCROLL: if (mFlingRunnable == null) { Loading Loading @@ -3614,47 +3672,6 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te mEdgeGlowBottom.onRelease(); } mActivePointerId = INVALID_POINTER; break; } case MotionEvent.ACTION_POINTER_UP: { onSecondaryPointerUp(ev); final int x = mMotionX; final int y = mMotionY; final int motionPosition = pointToPosition(x, y); if (motionPosition >= 0) { // Remember where the motion event started v = getChildAt(motionPosition - mFirstPosition); mMotionViewOriginalTop = v.getTop(); mMotionPosition = motionPosition; } mLastY = y; break; } case MotionEvent.ACTION_POINTER_DOWN: { // New pointers take over dragging duties final int index = ev.getActionIndex(); final int id = ev.getPointerId(index); final int x = (int) ev.getX(index); final int y = (int) ev.getY(index); mMotionCorrection = 0; mActivePointerId = id; mMotionX = x; mMotionY = y; final int motionPosition = pointToPosition(x, y); if (motionPosition >= 0) { // Remember where the motion event started v = getChildAt(motionPosition - mFirstPosition); mMotionViewOriginalTop = v.getTop(); mMotionPosition = motionPosition; } mLastY = y; break; } } return true; } @Override Loading