Java Code Examples for android.support.v4.view.MotionEventCompat#getPointerId()

The following examples show how to use android.support.v4.view.MotionEventCompat#getPointerId() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ScaleDragDetector.java    From CanPhotos with Apache License 2.0 6 votes vote down vote up
private void onTouchActivePointer(int action, MotionEvent ev) {
    switch (action) {
        case MotionEvent.ACTION_DOWN:
            mActivePointerId = ev.getPointerId(0);
            break;
        case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_UP:
            mActivePointerId = INVALID_POINTER_ID;
            break;
        case MotionEvent.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);
                mLastTouchX = MotionEventCompat.getX(ev, newPointerIndex);
                mLastTouchY = MotionEventCompat.getY(ev, newPointerIndex);
            }

            break;
    }

    mActivePointerIndex = MotionEventCompat.findPointerIndex(ev,
            mActivePointerId != INVALID_POINTER_ID ? mActivePointerId : 0);
}
 
Example 2
Source File: SlidingUpPanel.java    From Android-SlidingUpPanel with MIT License 6 votes vote down vote up
private void onTouchDown(MotionEvent ev, boolean intercept) {
	// Remember location of down touch.
	// ACTION_DOWN always refers to pointer index 0.
	mLastMotionX = mInitialMotionX = ev.getX();
	mLastMotionY = mInitialMotionY = ev.getY();
	mActivePointerId = MotionEventCompat.getPointerId(ev, 0);
	if (intercept) {
		mIsUnableToDrag = false;
		mScroller.computeScrollOffset();
		if (getState() == STATE_FLING) {
			// Let the user 'catch' the pager as it animates.
			mScroller.abortAnimation();
			mIsBeingDragged = true;
			requestParentDisallowInterceptTouchEvent(true);
			setState(STATE_DRAGGING);
		} else {
			completeScroll(false);
			mIsBeingDragged = false;
		}
	} else {
		mScroller.abortAnimation();
	}
}
 
Example 3
Source File: ViewPagerEx.java    From UltimateAndroid with Apache License 2.0 5 votes vote down vote up
private void onSecondaryPointerUp(MotionEvent ev) {
    final int pointerIndex = MotionEventCompat.getActionIndex(ev);
    final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);
    if (pointerId == mActivePointerId) {
        // This was our active pointer going up. Choose a new
        // active pointer and adjust accordingly.
        final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
        mLastMotionX = MotionEventCompat.getX(ev, newPointerIndex);
        mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex);
        if (mVelocityTracker != null) {
            mVelocityTracker.clear();
        }
    }
}
 
Example 4
Source File: CustomViewDragHelper.java    From DragVideo with Apache License 2.0 5 votes vote down vote up
private void saveLastMotion(MotionEvent ev) {
    final int pointerCount = MotionEventCompat.getPointerCount(ev);
    for (int i = 0; i < pointerCount; i++) {
        final int pointerId = MotionEventCompat.getPointerId(ev, i);
        final float x = MotionEventCompat.getX(ev, i);
        final float y = MotionEventCompat.getY(ev, i);
        mLastMotionX[pointerId] = x;
        mLastMotionY[pointerId] = y;
    }
}
 
Example 5
Source File: PullToRefreshView.java    From Taurus with Apache License 2.0 5 votes vote down vote up
private void onSecondaryPointerUp(MotionEvent ev) {
    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);
    }
}
 
Example 6
Source File: ViewDragHelper.java    From UltimateAndroid with Apache License 2.0 5 votes vote down vote up
private void saveLastMotion(MotionEvent ev) {
    final int pointerCount = MotionEventCompat.getPointerCount(ev);
    for (int i = 0; i < pointerCount; i++) {
        final int pointerId = MotionEventCompat.getPointerId(ev, i);
        final float x = MotionEventCompat.getX(ev, i);
        final float y = MotionEventCompat.getY(ev, i);
        mLastMotionX[pointerId] = x;
        mLastMotionY[pointerId] = y;
    }
}
 
Example 7
Source File: VerticalViewPager.java    From SprintNBA with Apache License 2.0 5 votes vote down vote up
private void onSecondaryPointerUp(MotionEvent ev) {
  final int pointerIndex = MotionEventCompat.getActionIndex(ev);
  final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);
  if (pointerId == mActivePointerId) {
    // This was our active pointer going up. Choose a new
    // active pointer and adjust accordingly.
    final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
    mLastMotionY = MotionEventCompat.getY(ev, newPointerIndex);
    mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex);
    if (mVelocityTracker != null) {
      mVelocityTracker.clear();
    }
  }
}
 
Example 8
Source File: CustomViewAbove.java    From LiuAGeAndroid with MIT License 5 votes vote down vote up
private void onSecondaryPointerUp(MotionEvent ev) {
	if (DEBUG) Log.v(TAG, "onSecondaryPointerUp called");
	final int pointerIndex = MotionEventCompat.getActionIndex(ev);
	final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);
	if (pointerId == mActivePointerId) {
		// This was our active pointer going up. Choose a new
		// active pointer and adjust accordingly.
		final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
		mLastMotionX = MotionEventCompat.getX(ev, newPointerIndex);
		mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex);
		if (mVelocityTracker != null) {
			mVelocityTracker.clear();
		}
	}
}
 
Example 9
Source File: SwipeRefreshLayout.java    From BookReader with Apache License 2.0 5 votes vote down vote up
private void onSecondaryPointerUp(MotionEvent ev) {
    final int pointerIndex = MotionEventCompat.getActionIndex(ev);
    final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);
    if (pointerId == mActivePointerId) {
        // This was our active pointer going up. Choose a new
        // active pointer and adjust accordingly.
        final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
        mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex);
    }
}
 
Example 10
Source File: ViewDragHelper.java    From o2oa with GNU Affero General Public License v3.0 5 votes vote down vote up
private void saveLastMotion(MotionEvent ev) {
    final int pointerCount = MotionEventCompat.getPointerCount(ev);
    for (int i = 0; i < pointerCount; i++) {
        final int pointerId = MotionEventCompat.getPointerId(ev, i);
        final float x = MotionEventCompat.getX(ev, i);
        final float y = MotionEventCompat.getY(ev, i);
        mLastMotionX[pointerId] = x;
        mLastMotionY[pointerId] = y;
    }
}
 
Example 11
Source File: VerticalViewPager.java    From VerticalViewPager with MIT License 5 votes vote down vote up
private void onSecondaryPointerUp(MotionEvent ev) {
    final int pointerIndex = MotionEventCompat.getActionIndex(ev);
    final int pointerId = MotionEventCompat.getPointerId(ev, pointerIndex);
    if (pointerId == mActivePointerId) {
        // This was our active pointer going up. Choose a new
        // active pointer and adjust accordingly.
        final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
        mLastMotionY = MotionEventCompat.getY(ev, newPointerIndex);
        mActivePointerId = MotionEventCompat.getPointerId(ev, newPointerIndex);
        if (mVelocityTracker != null) {
            mVelocityTracker.clear();
        }
    }
}
 
Example 12
Source File: IRecyclerView.java    From NetEasyNews with GNU General Public License v3.0 5 votes vote down vote up
private void onPointerUp(MotionEvent e) {
    final int actionIndex = MotionEventCompat.getActionIndex(e);
    if (MotionEventCompat.getPointerId(e, actionIndex) == mActivePointerId) {
        // Pick a new pointer to pick up the slack.
        final int newIndex = actionIndex == 0 ? 1 : 0;
        mActivePointerId = MotionEventCompat.getPointerId(e, newIndex);
        mLastTouchX = getMotionEventX(e, newIndex);
        mLastTouchY = getMotionEventY(e, newIndex);
    }
}
 
Example 13
Source File: MyPagerIndicator.java    From AndroidTranslucentUI with Apache License 2.0 4 votes vote down vote up
@Override
public boolean onTouchEvent(MotionEvent event) {
	if (super.onTouchEvent(event)) {
           return true;
       }
       if ((mViewPager == null) || (mViewPager.getAdapter().getCount() == 0)) {
           return false;
       }
       /*
        *  public static final int ACTION_DOWN             = 0; ���㴥������
	    public static final int ACTION_UP               = 1; ���㴥���뿪���� 
	    public static final int ACTION_MOVE             = 2; �������ƶ����� 
	    public static final int ACTION_CANCEL           = 3;��������ȡ�� 
	     public static final int ACTION_OUTSIDE          = 4;�������������߽� 
	    public static final int ACTION_POINTER_DOWN     = 5;��㴥������ 
	    public static final int ACTION_POINTER_UP       = 6;����뿪���� 
	   	������һЩ��touch�¼� 
	    public static final int ACTION_HOVER_MOVE       = 7; 
	    public static final int ACTION_SCROLL           = 8; 
	    public static final int ACTION_HOVER_ENTER      = 9; 
	    public static final int ACTION_HOVER_EXIT       = 10; 
	    ACTION_MASK = 0X000000ff �������� 
			ACTION_POINTER_INDEX_MASK = 0X0000ff00 �������������� 
		ACTION_POINTER_INDEX_SHIF T = 8 ��ȡ������������Ҫ�ƶ���λ�� 
        */
	final int action = event.getAction() & MotionEventCompat.ACTION_MASK;//��ö�������
	switch (action) {
       case MotionEvent.ACTION_DOWN:
       	//�������������
       	//����������Ϣ�����ǿ�����onTOuchEvent�¼����жϴ�������MotionEvent�����Ӧ���ǵ�����Ϣ���Ƕ����Ϣ
           mActivePointerId = MotionEventCompat.getPointerId(event,0);
           mLastMotionX = event.getX();
           break;
       case MotionEvent.ACTION_MOVE: {
           final int activePointerIndex = MotionEventCompat.findPointerIndex(event, mActivePointerId);
           final float x = MotionEventCompat.getX(event, 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_UP:
           if (!mIsDragging) {
               final int count = mViewPager.getAdapter().getCount();
               final int width = getWidth();
               final float halfWidth = width / 2f;
               final float sixthWidth = width / 6f;
               
               if ((currentPage > 0) && (event.getX() < halfWidth - sixthWidth)) {
                   if (action != MotionEvent.ACTION_CANCEL) {
                       mViewPager.setCurrentItem(currentPage - 1);
                   }
                   return true;
               } else if ((currentPage < count - 1) && (event.getX() > halfWidth + sixthWidth)) {
                   if (action != MotionEvent.ACTION_CANCEL) {
                       mViewPager.setCurrentItem(currentPage + 1);
                   }
                   return true;
               }
           }

           mIsDragging = false;
           mActivePointerId = INVALID_POINTER;
           if (mViewPager.isFakeDragging()) 
           	mViewPager.endFakeDrag();//��ֹ���ƻ����¼�
           
           break;

       case MotionEventCompat.ACTION_POINTER_DOWN: {
           final int index = MotionEventCompat.getActionIndex(event);
           mLastMotionX = MotionEventCompat.getX(event, index);
           mActivePointerId = MotionEventCompat.getPointerId(event, index);
           break;
       }

       case MotionEventCompat.ACTION_POINTER_UP:
           final int pointerIndex = MotionEventCompat.getActionIndex(event);
           final int pointerId = MotionEventCompat.getPointerId(event, pointerIndex);
           if (pointerId == mActivePointerId) {
               final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
               mActivePointerId = MotionEventCompat.getPointerId(event, newPointerIndex);
           }
           mLastMotionX = MotionEventCompat.getX(event, MotionEventCompat.findPointerIndex(event, mActivePointerId));
           break;
   }
	return true;
}
 
Example 14
Source File: CirclePageIndicator.java    From BigApp_Discuz_Android with Apache License 2.0 4 votes vote down vote up
public boolean onTouchEvent(android.view.MotionEvent ev) {
    if (super.onTouchEvent(ev)) {
        return true;
    }
    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;
}
 
Example 15
Source File: CirclePageIndicator.java    From ZhihuDaily with Apache License 2.0 4 votes vote down vote up
public boolean onTouchEvent(MotionEvent ev) {
    if (super.onTouchEvent(ev)) {
        return true;
    }
    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;
}
 
Example 16
Source File: TitlePageIndicator.java    From Huochexing12306 with Apache License 2.0 4 votes vote down vote up
public boolean onTouchEvent(android.view.MotionEvent ev) {
    if (super.onTouchEvent(ev)) {
        return true;
    }
    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 float leftThird = halfWidth - sixthWidth;
                final float rightThird = halfWidth + sixthWidth;
                final float eventX = ev.getX();

                if (eventX < leftThird) {
                    if (mCurrentPage > 0) {
                        if (action != MotionEvent.ACTION_CANCEL) {
                            mViewPager.setCurrentItem(mCurrentPage - 1);
                        }
                        return true;
                    }
                } else if (eventX > rightThird) {
                    if (mCurrentPage < count - 1) {
                        if (action != MotionEvent.ACTION_CANCEL) {
                            mViewPager.setCurrentItem(mCurrentPage + 1);
                        }
                        return true;
                    }
                } else {
                    //Middle third
                    if (mCenterItemClickListener != null && action != MotionEvent.ACTION_CANCEL) {
                        mCenterItemClickListener.onCenterItemClick(mCurrentPage);
                    }
                }
            }

            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;
}
 
Example 17
Source File: ExtendableListView.java    From UltimateAndroid with Apache License 2.0 4 votes vote down vote up
private boolean onTouchDown(final MotionEvent event) {
    final int x = (int) event.getX();
    final int y = (int) event.getY();
    int motionPosition = pointToPosition(x, y);

    mVelocityTracker.clear();
    mActivePointerId = MotionEventCompat.getPointerId(event, 0);

    // TODO : use the motion position for fling support
    // TODO : support long press!
    // startLongPressCheck();

    if ((mTouchMode != TOUCH_MODE_FLINGING) &&
            !mDataChanged &&
            motionPosition >= 0 &&
            getAdapter().isEnabled(motionPosition)) {
        // is it a tap or a scroll .. we don't know yet!
        mTouchMode = TOUCH_MODE_DOWN;

        if (mPendingCheckForTap == null) {
            mPendingCheckForTap = new CheckForTap();
        }
        postDelayed(mPendingCheckForTap, ViewConfiguration.getTapTimeout());

        if (event.getEdgeFlags() != 0 && motionPosition < 0) {
            // If we couldn't find a view to click on, but the down event was touching
            // the edge, we will bail out and try again. This allows the edge correcting
            // code in ViewRoot to try to find a nearby view to select
            return false;
        }
    }
    else if (mTouchMode == TOUCH_MODE_FLINGING) {
        mTouchMode = TOUCH_MODE_SCROLLING;
        mMotionCorrection = 0;
        motionPosition = findMotionRow(y);
    }

    mMotionX = x;
    mMotionY = y;
    mMotionPosition = motionPosition;
    mLastY = Integer.MIN_VALUE;

    return true;
}
 
Example 18
Source File: PullToRefreshView.java    From TLint with Apache License 2.0 4 votes vote down vote up
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {

    if (!isEnabled() || canChildScrollUp() || mRefreshing) {
        return false;
    }

    final int action = MotionEventCompat.getActionMasked(ev);

    switch (action) {
        case MotionEvent.ACTION_DOWN:
            setTargetOffsetTop(0, true);
            mActivePointerId = MotionEventCompat.getPointerId(ev, 0);
            mIsBeingDragged = false;
            final float initialMotionY = getMotionEventY(ev, mActivePointerId);
            if (initialMotionY == -1) {
                return false;
            }
            mInitialMotionY = initialMotionY;
            break;
        case MotionEvent.ACTION_MOVE:
            if (mActivePointerId == INVALID_POINTER) {
                return false;
            }
            final float y = getMotionEventY(ev, mActivePointerId);
            if (y == -1) {
                return false;
            }
            final float yDiff = y - mInitialMotionY;
            if (yDiff > mTouchSlop && !mIsBeingDragged) {
                mIsBeingDragged = true;
            }
            break;
        case MotionEvent.ACTION_UP:
        case MotionEvent.ACTION_CANCEL:
            mIsBeingDragged = false;
            mActivePointerId = INVALID_POINTER;
            break;
        case MotionEventCompat.ACTION_POINTER_UP:
            onSecondaryPointerUp(ev);
            break;
    }

    return mIsBeingDragged;
}
 
Example 19
Source File: RecyclerViewUtils.java    From PowerfulRecyclerView with Apache License 2.0 4 votes vote down vote up
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent event) {
    mActivePointerId = MotionEventCompat.getPointerId(event, 0);

    if (mActivePointerId == ACTIVE_POINTER_ID_NONE) {
        return;
    }

    final int action = MotionEventCompat.getActionMasked(event);
    final int activePointerIndex = MotionEventCompat
            .findPointerIndex(event, mActivePointerId);
    switch (action) {
        case MotionEvent.ACTION_MOVE: {

            if (activePointerIndex >= 0) {
                recyclerViewHeader.dispatchTouchEvent(event);
            }
            break;
        }
        case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_UP:
            if (activePointerIndex >= 0) {

                recyclerViewHeader.dispatchTouchEvent(event);
            }

            mActivePointerId = ACTIVE_POINTER_ID_NONE;
            shouldIntercept = false;
            break;
        case MotionEvent.ACTION_POINTER_UP: {
            final int pointerIndex = MotionEventCompat.getActionIndex(event);
            final int pointerId = MotionEventCompat.getPointerId(event, pointerIndex);
            if (pointerId == mActivePointerId) {

                final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
                mActivePointerId = MotionEventCompat.getPointerId(event, newPointerIndex);
            }
            break;
        }
    }
}
 
Example 20
Source File: CustomViewAbove.java    From BigApp_WordPress_Android with Apache License 2.0 4 votes vote down vote up
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {

	if (!mEnabled)
		return false;

	final int action = ev.getAction() & MotionEventCompat.ACTION_MASK;

	if (DEBUG)
		if (action == MotionEvent.ACTION_DOWN)
			Log.v(TAG, "Received ACTION_DOWN");

	if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP
			|| (action != MotionEvent.ACTION_DOWN && mIsUnableToDrag)) {
		endDrag();
		return false;
	}

	switch (action) {
	case MotionEvent.ACTION_MOVE:
		determineDrag(ev);
		break;
	case MotionEvent.ACTION_DOWN:
		int index = MotionEventCompat.getActionIndex(ev);
		mActivePointerId = MotionEventCompat.getPointerId(ev, index);
		if (mActivePointerId == INVALID_POINTER)
			break;
		mLastMotionX = mInitialMotionX = MotionEventCompat.getX(ev, index);
		mLastMotionY = MotionEventCompat.getY(ev, index);
		if (thisTouchAllowed(ev)) {
			mIsBeingDragged = false;
			mIsUnableToDrag = false;
			if (isMenuOpen() && mViewBehind.menuTouchInQuickReturn(mContent, mCurItem, ev.getX() + mScrollX)) {
				mQuickReturn = true;
			}
		} else {
			mIsUnableToDrag = true;
		}
		break;
	case MotionEventCompat.ACTION_POINTER_UP:
		onSecondaryPointerUp(ev);
		break;
	}

	if (!mIsBeingDragged) {
		if (mVelocityTracker == null) {
			mVelocityTracker = VelocityTracker.obtain();
		}
		mVelocityTracker.addMovement(ev);
	}
	return mIsBeingDragged || mQuickReturn;
}