List of usage examples for android.support.v4.view MotionEventCompat getPointerId
public static int getPointerId(MotionEvent event, int pointerIndex)
From source file:com.halloon.android.util.UnderLinePageIndicator.java
public boolean onTouchEvent(MotionEvent ev) { if (super.onTouchEvent(ev)) { return true; }/*from w w w. j a v a2s . co m*/ if ((mViewPager == null) || (mViewPager.getAdapter().getCount() == 0)) { return false; } final int action = ev.getAction() & MotionEventCompat.ACTION_MASK; switch (action) { case MotionEvent.ACTION_DOWN: mActivePointerId = MotionEventCompat.getPointerId(ev, 0); mLastMotionX = ev.getX(); break; case MotionEvent.ACTION_MOVE: { final int activePointerIndex = MotionEventCompat.findPointerIndex(ev, mActivePointerId); final float x = MotionEventCompat.getX(ev, activePointerIndex); final float deltaX = x - mLastMotionX; if (!mIsDragging) { if (Math.abs(deltaX) > mTouchSlop) { mIsDragging = true; } } if (mIsDragging) { mLastMotionX = x; if (mViewPager.isFakeDragging() || mViewPager.beginFakeDrag()) { mViewPager.fakeDragBy(deltaX); } } break; } case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: if (!mIsDragging) { final int count = mViewPager.getAdapter().getCount(); final int width = getWidth(); final float halfWidth = width / 2f; final float sixthWidth = width / 6f; final int pageWidth = (getWidth() - getPaddingLeft() - getPaddingRight()) / count; final int currentTouchPosition = (int) Math.floor(ev.getX() / pageWidth); mViewPager.setCurrentItem(currentTouchPosition); /* * if ((mCurrentPage > 0) && (ev.getX() < halfWidth - * sixthWidth)) { if (action != MotionEvent.ACTION_CANCEL) { * mViewPager.setCurrentItem(mCurrentPage - 1); } return true; } * else if ((mCurrentPage < count - 1) && (ev.getX() > halfWidth * + sixthWidth)) { if (action != MotionEvent.ACTION_CANCEL) { * mViewPager.setCurrentItem(mCurrentPage + 1); } return true; } */ } mIsDragging = false; mActivePointerId = INVALID_POINTER; if (mViewPager.isFakeDragging()) mViewPager.endFakeDrag(); break; case MotionEventCompat.ACTION_POINTER_DOWN: { final int index = MotionEventCompat.getActionIndex(ev); mLastMotionX = MotionEventCompat.getX(ev, index); mActivePointerId = MotionEventCompat.getPointerId(ev, index); break; } case MotionEventCompat.ACTION_POINTER_UP: final int pointerIndex = MotionEventCompat.getActionIndex(ev); final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex); if (pointerId == mActivePointerId) { final int newPointerIndex = pointerIndex == 0 ? 1 : 0; mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex); } mLastMotionX = MotionEventCompat.getX(ev, MotionEventCompat.findPointerIndex(ev, mActivePointerId)); break; } return true; }
From source file:com.github.ppamorim.dragger.DraggerView.java
/** * Handle the touch event intercepted from onInterceptTouchEvent * method, this method valid if the touch listener * is a valid pointer(like fingers) or the touch * is inside of the DraggerView./*from w w w. jav a 2 s . co m*/ * * @param ev MotionEvent instance, can be used to detect the type of touch. * @return Touched area is a valid position. */ @Override public boolean onTouchEvent(MotionEvent ev) { int actionMasked = MotionEventCompat.getActionMasked(ev); if ((actionMasked & MotionEventCompat.ACTION_MASK) == MotionEvent.ACTION_DOWN) { activePointerId = MotionEventCompat.getPointerId(ev, actionMasked); } if (activePointerId == INVALID_POINTER) { return false; } dragHelper.processTouchEvent(ev); return isViewHit(dragView, (int) ev.getX(), (int) ev.getY()) || isViewHit(shadowView, (int) ev.getX(), (int) ev.getY()); }
From source file:com.android.hiparker.lierda_light.view.viewpagerindicator.LinePageIndicator.java
public boolean onTouchEvent(android.view.MotionEvent ev) { if (super.onTouchEvent(ev)) { return true; }// w w w . j av a 2s. c om if ((mViewPager == null) || (mViewPager.getAdapter().getCount() == 0)) { return false; } final int action = ev.getAction() & MotionEventCompat.ACTION_MASK; switch (action) { case MotionEvent.ACTION_DOWN: mActivePointerId = MotionEventCompat.getPointerId(ev, 0); mLastMotionX = ev.getX(); break; case MotionEvent.ACTION_MOVE: { final int activePointerIndex = MotionEventCompat.findPointerIndex(ev, mActivePointerId); final float x = MotionEventCompat.getX(ev, activePointerIndex); final float deltaX = x - mLastMotionX; if (!mIsDragging) { if (Math.abs(deltaX) > mTouchSlop) { mIsDragging = true; } } if (mIsDragging) { mLastMotionX = x; if (mViewPager.isFakeDragging() || mViewPager.beginFakeDrag()) { mViewPager.fakeDragBy(deltaX); } } break; } case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: if (!mIsDragging) { final int count = mViewPager.getAdapter().getCount(); final int width = getWidth(); final float halfWidth = width / 2f; final float sixthWidth = width / 6f; if ((mCurrentPage > 0) && (ev.getX() < halfWidth - sixthWidth)) { if (action != MotionEvent.ACTION_CANCEL) { mViewPager.setCurrentItem(mCurrentPage - 1); } return true; } else if ((mCurrentPage < count - 1) && (ev.getX() > halfWidth + sixthWidth)) { if (action != MotionEvent.ACTION_CANCEL) { mViewPager.setCurrentItem(mCurrentPage + 1); } return true; } } mIsDragging = false; mActivePointerId = INVALID_POINTER; if (mViewPager.isFakeDragging()) mViewPager.endFakeDrag(); break; case MotionEventCompat.ACTION_POINTER_DOWN: { final int index = MotionEventCompat.getActionIndex(ev); mLastMotionX = MotionEventCompat.getX(ev, index); mActivePointerId = MotionEventCompat.getPointerId(ev, index); break; } case MotionEventCompat.ACTION_POINTER_UP: final int pointerIndex = MotionEventCompat.getActionIndex(ev); final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex); if (pointerId == mActivePointerId) { final int newPointerIndex = pointerIndex == 0 ? 1 : 0; mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex); } mLastMotionX = MotionEventCompat.getX(ev, MotionEventCompat.findPointerIndex(ev, mActivePointerId)); break; } return true; }
From source file:com.kuloud.android.unity.ui.widget.steprefresh.PullToRefreshView.java
@Override public boolean onTouchEvent(@NonNull MotionEvent ev) { // if (!mIsBeingDragged) { // return super.onTouchEvent(ev); // }//from ww w .j a va 2s . c o m final int action = MotionEventCompat.getActionMasked(ev); switch (action) { case MotionEvent.ACTION_MOVE: { final int pointerIndex = MotionEventCompat.findPointerIndex(ev, mActivePointerId); if (pointerIndex < 0) { return false; } final float y = MotionEventCompat.getY(ev, pointerIndex); final float yDiff = y - mInitialMotionY; final float scrollTop = yDiff * DRAG_RATE; mCurrentDragPercent = scrollTop / mTotalDragDistance; if (mCurrentDragPercent < 0) { return false; } float boundedDragPercent = Math.min(1f, Math.abs(mCurrentDragPercent)); float extraOS = Math.abs(scrollTop) - mTotalDragDistance; float slingshotDist = mTotalDragDistance; float tensionSlingshotPercent = Math.max(0, Math.min(extraOS, slingshotDist * 2) / slingshotDist); float tensionPercent = (float) ((tensionSlingshotPercent / 4) - Math.pow((tensionSlingshotPercent / 4), 2)) * 2f; float extraMove = (slingshotDist) * tensionPercent / 2; int targetY = (int) ((slingshotDist * boundedDragPercent) + extraMove); mBaseRefreshView.setPercent(mCurrentDragPercent, true); setTargetOffsetTop(targetY - mCurrentOffsetTop); break; } case MotionEventCompat.ACTION_POINTER_DOWN: final int index = MotionEventCompat.getActionIndex(ev); mActivePointerId = MotionEventCompat.getPointerId(ev, index); break; case MotionEventCompat.ACTION_POINTER_UP: onSecondaryPointerUp(ev); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: { if (mActivePointerId == INVALID_POINTER) { return false; } final int pointerIndex = MotionEventCompat.findPointerIndex(ev, mActivePointerId); final float y = MotionEventCompat.getY(ev, pointerIndex); final float overScrollTop = (y - mInitialMotionY) * DRAG_RATE; mIsBeingDragged = false; if (overScrollTop > mTotalDragDistance) { setRefreshing(true, true); } else { mRefreshing = false; animateOffsetToPosition(mAnimateToStartPosition, false); } mActivePointerId = INVALID_POINTER; return false; } } return true; }
From source file:chinanurse.cn.nurse.list.WaveSwipeRefreshLayout.java
@Override public boolean onInterceptTouchEvent(@NonNull MotionEvent event) { ensureTarget();/* w w w . j a va 2 s . c om*/ if (!isEnabled() || canChildScrollUp() || isRefreshing()) { return false; } final int action = MotionEventCompat.getActionMasked(event); switch (action) { case MotionEvent.ACTION_DOWN: mActivePointerId = MotionEventCompat.getPointerId(event, 0); mFirstTouchDownPointY = getMotionEventY(event, mActivePointerId); break; case MotionEvent.ACTION_MOVE: if (mActivePointerId == INVALID_POINTER) { return false; } final float currentY = getMotionEventY(event, mActivePointerId); if (currentY == -1) { return false; } if (mFirstTouchDownPointY == -1) { mFirstTouchDownPointY = currentY; } final float yDiff = currentY - mFirstTouchDownPointY; // State is changed to drag if over slop if (yDiff > ViewConfiguration.get(getContext()).getScaledTouchSlop() && !isRefreshing()) { mCircleView.makeProgressTransparent(); return true; } break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: mActivePointerId = INVALID_POINTER; break; } return false; }
From source file:com.joy.ui.view.banner.indicator.CircleIndicator.java
public boolean onTouchEvent(MotionEvent ev) { if (super.onTouchEvent(ev)) { return true; }// www .j a v a2 s . co m if (mViewPager == null || mIndicatorCount == 0) { return false; } final int action = ev.getAction() & MotionEventCompat.ACTION_MASK; switch (action) { case MotionEvent.ACTION_DOWN: mActivePointerId = MotionEventCompat.getPointerId(ev, 0); mLastMotionX = ev.getX(); break; case MotionEvent.ACTION_MOVE: { final int activePointerIndex = MotionEventCompat.findPointerIndex(ev, mActivePointerId); final float x = MotionEventCompat.getX(ev, activePointerIndex); final float deltaX = x - mLastMotionX; if (!mIsDragging) { if (Math.abs(deltaX) > mTouchSlop) { mIsDragging = true; } } if (mIsDragging) { mLastMotionX = x; if (mViewPager.isFakeDragging() || mViewPager.beginFakeDrag()) { mViewPager.fakeDragBy(deltaX); } } break; } case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: if (!mIsDragging) { final int count = mIndicatorCount; final int width = getWidth(); final float halfWidth = width / 2f; final float sixthWidth = width / 6f; if ((mCurrentPage > 0) && (ev.getX() < halfWidth - sixthWidth)) { if (action != MotionEvent.ACTION_CANCEL) { mViewPager.setCurrentItem(mCurrentPage - 1); } return true; } else if ((mCurrentPage < count - 1) && (ev.getX() > halfWidth + sixthWidth)) { if (action != MotionEvent.ACTION_CANCEL) { mViewPager.setCurrentItem(mCurrentPage + 1); } return true; } } mIsDragging = false; mActivePointerId = INVALID_POINTER; if (mViewPager.isFakeDragging()) mViewPager.endFakeDrag(); break; case MotionEventCompat.ACTION_POINTER_DOWN: { final int index = MotionEventCompat.getActionIndex(ev); mLastMotionX = MotionEventCompat.getX(ev, index); mActivePointerId = MotionEventCompat.getPointerId(ev, index); break; } case MotionEventCompat.ACTION_POINTER_UP: final int pointerIndex = MotionEventCompat.getActionIndex(ev); final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex); if (pointerId == mActivePointerId) { final int newPointerIndex = pointerIndex == 0 ? 1 : 0; mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex); } mLastMotionX = MotionEventCompat.getX(ev, MotionEventCompat.findPointerIndex(ev, mActivePointerId)); break; } return true; }
From source file:com.google.android.apps.santatracker.map.BottomSheetBehavior.java
@Override public boolean onInterceptTouchEvent(CoordinatorLayout parent, V child, MotionEvent event) { int action = MotionEventCompat.getActionMasked(event); // Record the velocity if (action == MotionEvent.ACTION_DOWN) { reset();//from ww w . jav a 2 s . c om } if (mVelocityTracker == null) { mVelocityTracker = VelocityTracker.obtain(); } mVelocityTracker.addMovement(event); switch (action) { case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: // Reset the ignore flag if (mIgnoreEvents) { mIgnoreEvents = false; return false; } break; case MotionEvent.ACTION_DOWN: mIgnoreEvents = !parent.isPointInChildBounds(child, (int) event.getX(), (int) event.getY()); mActivePointerId = MotionEventCompat.getPointerId(event, 0); break; } return !mIgnoreEvents && mViewDragHelper.shouldInterceptTouchEvent(event); }
From source file:com.gitstudy.rili.liarbry.CalendarLayout.java
@SuppressLint("ClickableViewAccessibility") @Override//from w w w . j av a 2s.c o m public boolean onTouchEvent(MotionEvent event) { if (mDelegate.isShowYearSelectedLayout) { return false; } if (mContentView == null) { return false; } int action = event.getAction(); float y = event.getY(); mVelocityTracker.addMovement(event); switch (action) { case MotionEvent.ACTION_DOWN: int index = MotionEventCompat.getActionIndex(event); mActivePointerId = MotionEventCompat.getPointerId(event, index); mLastY = downY = y; return true; case MotionEventCompat.ACTION_POINTER_DOWN: { final int indexx = MotionEventCompat.getActionIndex(event); mActivePointerId = MotionEventCompat.getPointerId(event, indexx); if (mActivePointerId == 0) { //?? dy = y- mLastY == 0?? mLastY = MotionEventCompat.getY(event, mActivePointerId); } break; } case MotionEvent.ACTION_MOVE: if (mGestureMode == GESTURE_MODE_DISABLED || mCalendarShowMode == CALENDAR_SHOW_MODE_ONLY_MONTH_VIEW || mCalendarShowMode == CALENDAR_SHOW_MODE_ONLY_WEEK_VIEW) {//???? return false; } getPointerIndex(event, mActivePointerId); if (mActivePointerId == INVALID_POINTER) { //?mLastY?y????? dy== 0?? mLastY = y; mActivePointerId = ACTIVE_POINTER; } float dy = y - mLastY; //?contentView? if (dy < 0 && mContentView.getTranslationY() == -mContentViewTranslateY) { //mContentView.onTouchEvent(event); showWeek(); mLastY = y; return false; } hideWeek(); //?contentView? if (dy > 0 && mContentView.getTranslationY() + dy >= 0) { mContentView.setTranslationY(0); translationViewPager(); mLastY = y; return super.onTouchEvent(event); } //?contentView??contentView? if (dy < 0 && mContentView.getTranslationY() + dy <= -mContentViewTranslateY) { mContentView.setTranslationY(-mContentViewTranslateY); translationViewPager(); mLastY = y; return super.onTouchEvent(event); } //? mContentView.setTranslationY(mContentView.getTranslationY() + dy); translationViewPager(); mLastY = y; break; case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_POINTER_UP: int pointerIndex = getPointerIndex(event, mActivePointerId); if (mActivePointerId == INVALID_POINTER) break; mLastY = MotionEventCompat.getY(event, pointerIndex); break; case MotionEvent.ACTION_UP: final VelocityTracker velocityTracker = mVelocityTracker; velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); float mYVelocity = velocityTracker.getYVelocity(); if (mContentView.getTranslationY() == 0 || mContentView.getTranslationY() == mContentViewTranslateY) { break; } if (Math.abs(mYVelocity) >= 800) { if (mYVelocity < 0) { shrink(); } else { expand(); } return super.onTouchEvent(event); } if (event.getY() - downY > 0) { expand(); } else { shrink(); } break; } return super.onTouchEvent(event); }
From source file:com.google.blockly.android.ui.VirtualWorkspaceView.java
@Override public boolean onTouchEvent(MotionEvent event) { mScaleGestureDetector.onTouchEvent(event); if (mScaleGestureDetector.isInProgress()) { // If the scale gesture detector is handling a scale-and-pan gesture, then exit here // since otherwise we would also be generating dragging events below. return true; }//from www . jav a 2 s . co m final int action = MotionEventCompat.getActionMasked(event); switch (action) { case MotionEvent.ACTION_DOWN: { clearFocus(); mImeManager.hideSoftInputFromWindow(getWindowToken(), 0); if (mScrollable) { final int pointerIdx = MotionEventCompat.getActionIndex(event); mPanningPointerId = MotionEventCompat.getPointerId(event, pointerIdx); mPanningStart.set((int) MotionEventCompat.getX(event, pointerIdx), (int) MotionEventCompat.getY(event, pointerIdx)); mOriginalScrollX = getScrollX(); mOriginalScrollY = getScrollY(); } return true; } case MotionEvent.ACTION_MOVE: { if (mPanningPointerId != MotionEvent.INVALID_POINTER_ID) { final int pointerIdx = MotionEventCompat.findPointerIndex(event, mPanningPointerId); if (pointerIdx == -1) { // TODO: (#319) remove when we clean up multi-touch handling. Log.w(TAG, "Got an invalid pointer idx for the panning pointer."); return false; } scrollTo(mOriginalScrollX + mPanningStart.x - (int) MotionEventCompat.getX(event, pointerIdx), mOriginalScrollY + mPanningStart.y - (int) MotionEventCompat.getY(event, pointerIdx)); return true; } else { return false; } } case MotionEvent.ACTION_POINTER_UP: { // Some pointer went up - check whether it was the one used for panning. final int pointerIdx = MotionEventCompat.getActionIndex(event); final int pointerId = MotionEventCompat.getPointerId(event, pointerIdx); if (pointerId != mPanningPointerId) { return false; } // Pointer that went up was used for panning - treat like ACTION_UP. // FALLTHROUGH INTENDED. } case MotionEvent.ACTION_UP: { if (mPanningPointerId != MotionEvent.INVALID_POINTER_ID) { mPanningPointerId = MotionEvent.INVALID_POINTER_ID; return true; } else { return false; } } case MotionEvent.ACTION_CANCEL: { if (mPanningPointerId != MotionEvent.INVALID_POINTER_ID) { // When cancelled, reset to original scroll position. scrollTo(mOriginalScrollX, mOriginalScrollY); mPanningPointerId = MotionEvent.INVALID_POINTER_ID; return true; } else { return false; } } default: { break; } } return false; }
From source file:com.dotit.gireve.ihm.viewpager.CirclePageIndicator.java
public boolean onTouchEvent(MotionEvent ev) { if ((mViewPager == null) || (mViewPager.getAdapter().getCount() == 0)) { return false; }//from w w w. ja v a 2 s . c om final int action = ev.getAction(); switch (action & MotionEventCompat.ACTION_MASK) { case MotionEvent.ACTION_DOWN: mActivePointerId = MotionEventCompat.getPointerId(ev, 0); mLastMotionX = ev.getX(); break; case MotionEvent.ACTION_MOVE: { final int activePointerIndex = MotionEventCompat.findPointerIndex(ev, mActivePointerId); final float x = MotionEventCompat.getX(ev, activePointerIndex); final float deltaX = x - mLastMotionX; if (!mIsDragging) { if (Math.abs(deltaX) > mTouchSlop) { mIsDragging = true; } } if (mIsDragging) { if (!mViewPager.isFakeDragging()) { mViewPager.beginFakeDrag(); } mLastMotionX = x; mViewPager.fakeDragBy(deltaX); } break; } case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: if (!mIsDragging) { final int count = mViewPager.getAdapter().getCount(); final int width = getWidth(); final float halfWidth = width / 2f; final float sixthWidth = width / 6f; if ((mCurrentPage > 0) && (ev.getX() < halfWidth - sixthWidth)) { mViewPager.setCurrentItem(mCurrentPage - 1); return true; } else if ((mCurrentPage < count - 1) && (ev.getX() > halfWidth + sixthWidth)) { mViewPager.setCurrentItem(mCurrentPage + 1); return true; } } mIsDragging = false; mActivePointerId = INVALID_POINTER; if (mViewPager.isFakeDragging()) mViewPager.endFakeDrag(); break; case MotionEventCompat.ACTION_POINTER_DOWN: { final int index = MotionEventCompat.getActionIndex(ev); final float x = MotionEventCompat.getX(ev, index); mLastMotionX = x; mActivePointerId = MotionEventCompat.getPointerId(ev, index); break; } case MotionEventCompat.ACTION_POINTER_UP: final int pointerIndex = MotionEventCompat.getActionIndex(ev); final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex); if (pointerId == mActivePointerId) { final int newPointerIndex = pointerIndex == 0 ? 1 : 0; mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex); } mLastMotionX = MotionEventCompat.getX(ev, MotionEventCompat.findPointerIndex(ev, mActivePointerId)); break; } return true; }