android.view.MotionEvent#ACTION_POINTER_INDEX_SHIFT源码实例Demo

下面列出了android.view.MotionEvent#ACTION_POINTER_INDEX_SHIFT 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: android_9.0.0_r45   文件: HorizontalScrollView.java
private void onSecondaryPointerUp(MotionEvent ev) {
    final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >>
            MotionEvent.ACTION_POINTER_INDEX_SHIFT;
    final int pointerId = ev.getPointerId(pointerIndex);
    if (pointerId == mActivePointerId) {
        // This was our active pointer going up. Choose a new
        // active pointer and adjust accordingly.
        // TODO: Make this decision more intelligent.
        final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
        mLastMotionX = (int) ev.getX(newPointerIndex);
        mActivePointerId = ev.getPointerId(newPointerIndex);
        if (mVelocityTracker != null) {
            mVelocityTracker.clear();
        }
    }
}
 
源代码2 项目: android_9.0.0_r45   文件: ScrollView.java
private void onSecondaryPointerUp(MotionEvent ev) {
    final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >>
            MotionEvent.ACTION_POINTER_INDEX_SHIFT;
    final int pointerId = ev.getPointerId(pointerIndex);
    if (pointerId == mActivePointerId) {
        // This was our active pointer going up. Choose a new
        // active pointer and adjust accordingly.
        // TODO: Make this decision more intelligent.
        final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
        mLastMotionY = (int) ev.getY(newPointerIndex);
        mActivePointerId = ev.getPointerId(newPointerIndex);
        if (mVelocityTracker != null) {
            mVelocityTracker.clear();
        }
    }
}
 
源代码3 项目: android-test   文件: MotionEventBuilder.java
/** Returns a MotionEvent with the provided data or reasonable defaults. */
public MotionEvent build() {
  if (pointerPropertiesList.size() == 0) {
    setPointer(0, 0);
  }
  if (actionIndex != -1) {
    action = action | (actionIndex << MotionEvent.ACTION_POINTER_INDEX_SHIFT);
  }
  return MotionEvent.obtain(
      downTime,
      eventTime,
      action,
      pointerPropertiesList.size(),
      pointerPropertiesList.toArray(new PointerProperties[pointerPropertiesList.size()]),
      pointerCoordsList.toArray(new MotionEvent.PointerCoords[pointerCoordsList.size()]),
      metaState,
      buttonState,
      xPrecision,
      yPrecision,
      deviceId,
      edgeFlags,
      source,
      flags);
}
 
源代码4 项目: LB-Launcher   文件: PagedView.java
private void onSecondaryPointerUp(MotionEvent ev) {
    final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >>
            MotionEvent.ACTION_POINTER_INDEX_SHIFT;
    final int pointerId = ev.getPointerId(pointerIndex);
    if (pointerId == mActivePointerId) {
        // This was our active pointer going up. Choose a new
        // active pointer and adjust accordingly.
        // TODO: Make this decision more intelligent.
        final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
        mLastMotionX = mDownMotionX = ev.getX(newPointerIndex);
        mLastMotionY = ev.getY(newPointerIndex);
        mLastMotionXRemainder = 0;
        mActivePointerId = ev.getPointerId(newPointerIndex);
        if (mVelocityTracker != null) {
            mVelocityTracker.clear();
        }
    }
}
 
源代码5 项目: PicturePicker   文件: VersionedGestureDetector.java
@Override
public boolean onTouchEvent(MotionEvent ev) {
    final int action = ev.getAction();
    switch (action & MotionEvent.ACTION_MASK) {
        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 = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
            final int pointerId = ev.getPointerId(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 = ev.getPointerId(newPointerIndex);
                mLastTouchX = ev.getX(newPointerIndex);
                mLastTouchY = ev.getY(newPointerIndex);
            }
            break;
    }

    mActivePointerIndex = ev.findPointerIndex(mActivePointerId != INVALID_POINTER_ID ? mActivePointerId : 0);
    return super.onTouchEvent(ev);
}
 
源代码6 项目: codeexamples-android   文件: MultitouchActivity.java
@Override
public boolean onTouch(View v, MotionEvent event) {
	int action = event.getAction() & MotionEvent.ACTION_MASK;
	int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
	pointerCount = event.getPointerCount();

	int actionId = event.getPointerId(pointerIndex);
	Log.d("greenrobot", "MotionEvent - pointer ID:  " + actionId
			+ ", action: " + mapActionCodeToString(action)
			+ ", pointer count: " + pointerCount);
	if (actionId < MAX_POINTERS) {
		lastActions[actionId] = action;
	}

	for (int i = 0; i < pointerCount; i++) {
		int pointerId = event.getPointerId(i);
		if (pointerId < MAX_POINTERS) {
			points[pointerId] = new PointF(event.getX(i), event.getY(i));
			if (action == MotionEvent.ACTION_MOVE) {
				lastActions[pointerId] = action;
			}
		}
	}

	touchView.invalidate();
	return true;
}
 
@Override
public boolean onTouchEvent(MotionEvent ev) {
	final int action = ev.getAction();
	switch (action & MotionEvent.ACTION_MASK) {
		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 = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
			final int pointerId = ev.getPointerId(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 = ev.getPointerId(newPointerIndex);
				mLastTouchX = ev.getX(newPointerIndex);
				mLastTouchY = ev.getY(newPointerIndex);
			}
			break;
	}

	mActivePointerIndex = ev.findPointerIndex(mActivePointerId != INVALID_POINTER_ID ? mActivePointerId : 0);
	return super.onTouchEvent(ev);
}
 
@Override
public boolean onTouchEvent(MotionEvent ev) {
	final int action = ev.getAction();
	switch (action & MotionEvent.ACTION_MASK) {
		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 = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
			final int pointerId = ev.getPointerId(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 = ev.getPointerId(newPointerIndex);
				mLastTouchX = ev.getX(newPointerIndex);
				mLastTouchY = ev.getY(newPointerIndex);
			}
			break;
	}

	mActivePointerIndex = ev.findPointerIndex(mActivePointerId != INVALID_POINTER_ID ? mActivePointerId : 0);
	return super.onTouchEvent(ev);
}
 
源代码9 项目: school_shop   文件: VersionedGestureDetector.java
@Override
public boolean onTouchEvent(MotionEvent ev) {
	final int action = ev.getAction();
	switch (action & MotionEvent.ACTION_MASK) {
		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 = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
			final int pointerId = ev.getPointerId(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 = ev.getPointerId(newPointerIndex);
				mLastTouchX = ev.getX(newPointerIndex);
				mLastTouchY = ev.getY(newPointerIndex);
			}
			break;
	}

	mActivePointerIndex = ev.findPointerIndex(mActivePointerId != INVALID_POINTER_ID ? mActivePointerId : 0);
	return super.onTouchEvent(ev);
}
 
源代码10 项目: Social   文件: VersionedGestureDetector.java
@Override
public boolean onTouchEvent(MotionEvent ev) {
	final int action = ev.getAction();
	switch (action & MotionEvent.ACTION_MASK) {
		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 = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
			final int pointerId = ev.getPointerId(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 = ev.getPointerId(newPointerIndex);
				mLastTouchX = ev.getX(newPointerIndex);
				mLastTouchY = ev.getY(newPointerIndex);
			}
			break;
	}

	mActivePointerIndex = ev.findPointerIndex(mActivePointerId != INVALID_POINTER_ID ? mActivePointerId : 0);
	return super.onTouchEvent(ev);
}
 
源代码11 项目: ZrcListView   文件: ZrcAbsListView.java
private void onSecondaryPointerUp(MotionEvent ev) {
	final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
	final int pointerId = ev.getPointerId(pointerIndex);
	if (pointerId == mActivePointerId) {
		final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
		mMotionX = (int) ev.getX(newPointerIndex);
		mMotionY = (int) ev.getY(newPointerIndex);
		mMotionCorrection = 0;
		mActivePointerId = ev.getPointerId(newPointerIndex);
	}
}
 
源代码12 项目: Mysplash   文件: Util.java
static int getPointerIndex(int action) {
    return (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
}
 
源代码13 项目: giffun   文件: Util.java
static int getPointerIndex(int action) {
    return (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
}
 
源代码14 项目: Album   文件: Compat.java
public static int getPointerIndex(int action) {
    return (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
}
 
源代码15 项目: zen4android   文件: Compat.java
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private static int getPointerIndexHoneyComb(int action) {
    return (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
}
 
源代码16 项目: SwipeCardView   文件: FlingCardListener.java
@Override
  public boolean onTouch(View view, MotionEvent event) {
  	
  	try {
       switch (event.getAction() & MotionEvent.ACTION_MASK) {
           case MotionEvent.ACTION_DOWN:

                  // remove the listener because 'onAnimationEnd' will still be called if we cancel the animation.
                  this.frame.animate().setListener(null);
                  this.frame.animate().cancel();

                  resetAnimCanceled = true;

               // Save the ID of this pointer
               mActivePointerId = event.getPointerId(0);
               final float x = event.getX(mActivePointerId);
               final float y = event.getY(mActivePointerId);					
	
               // Remember where we started
               aDownTouchX = x;
               aDownTouchY = y;
               // to prevent an initial jump of the magnifier, aposX and aPosY must
               // have the values from the magnifier frame
                  aPosX = frame.getX();
                  aPosY = frame.getY();
	
               if (y < objectH/2) {
                   touchPosition = TOUCH_ABOVE;
               } else {
                   touchPosition = TOUCH_BELOW;
               }
               break;

           case MotionEvent.ACTION_POINTER_DOWN:
               break;
	
           case MotionEvent.ACTION_POINTER_UP:
               // Extract the index of the pointer that left the touch sensor
               final int pointerIndex = (event.getAction() &
                       MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
               final int pointerId = event.getPointerId(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 = event.getPointerId(newPointerIndex);
               }
               break;
           case MotionEvent.ACTION_MOVE:
	
               // Find the index of the active pointer and fetch its position
               final int pointerIndexMove = event.findPointerIndex(mActivePointerId);
               final float xMove = event.getX(pointerIndexMove);
               final float yMove = event.getY(pointerIndexMove);
               
               // from http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html
               // Calculate the distance moved
               final float dx = xMove - aDownTouchX;
               final float dy = yMove - aDownTouchY;
	
               // Move the frame
               aPosX += dx;
               aPosY += dy;
	
               // calculate the rotation degrees
               float distObjectX = aPosX - objectX;
               float rotation = BASE_ROTATION_DEGREES * 2f * distObjectX / parentWidth;
               if (touchPosition == TOUCH_BELOW) {
                   rotation = -rotation;
               }
	
               // in this area would be code for doing something with the view as the frame moves.
                  if (isNeedSwipe) {
                      frame.setX(aPosX);
                      frame.setY(aPosY);
                      frame.setRotation(rotation);
                      mFlingListener.onScroll(getScrollProgress(), getScrollXProgressPercent());
                  }
               break;

              case MotionEvent.ACTION_UP:
              case MotionEvent.ACTION_CANCEL:
                  //mActivePointerId = INVALID_POINTER_ID;
                  int pointerCount = event.getPointerCount();
                  int activePointerId = Math.min(mActivePointerId, pointerCount - 1);
                  aTouchUpX = event.getX(activePointerId);
                  mActivePointerId = INVALID_POINTER_ID;
                  resetCardViewOnStack(event);
               break;

       }
  	} catch (Exception e) {
	e.printStackTrace();
}

      return true;
  }
 
源代码17 项目: PhotoViewer   文件: Util.java
static int getPointerIndex(int action) {
    return (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
}
 
源代码18 项目: Dashboard   文件: Compat.java
@TargetApi(VERSION_CODES.HONEYCOMB)
private static int getPointerIndexHoneyComb(int action) {
    return (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
}
 
源代码19 项目: libcommon   文件: MotionEventUtils.java
/**
 * 指定したMotionEventのactionをACTION_XXX形式の文字列に変換する
 * MotionEvent#actionToStringがAPI>=19なので後方互換性のためにバックポート
 * @param event
 * @return
 */
public static String getActionString(@NonNull final MotionEvent event) {
	if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
		return MotionEvent.actionToString(event.getActionMasked());
	} else {
		final int action = event.getActionMasked();
		switch (action) {
		case MotionEvent.ACTION_DOWN:
			return "ACTION_DOWN";
		case MotionEvent.ACTION_UP:
			return "ACTION_UP";
		case MotionEvent.ACTION_CANCEL:
			return "ACTION_CANCEL";
		case MotionEvent.ACTION_OUTSIDE:
			return "ACTION_OUTSIDE";
		case MotionEvent.ACTION_MOVE:
			return "ACTION_MOVE";
		case MotionEvent.ACTION_HOVER_MOVE:
			return "ACTION_HOVER_MOVE";
		case MotionEvent.ACTION_SCROLL:
			return "ACTION_SCROLL";
		case MotionEvent.ACTION_HOVER_ENTER:
			return "ACTION_HOVER_ENTER";
		case MotionEvent.ACTION_HOVER_EXIT:
			return "ACTION_HOVER_EXIT";
		case MotionEvent.ACTION_BUTTON_PRESS:
			return "ACTION_BUTTON_PRESS";
		case MotionEvent.ACTION_BUTTON_RELEASE:
			return "ACTION_BUTTON_RELEASE";
		}

		final int index = (action & MotionEvent.ACTION_POINTER_INDEX_MASK)
			>> MotionEvent.ACTION_POINTER_INDEX_SHIFT;

		switch (action & MotionEvent.ACTION_MASK) {
		case MotionEvent.ACTION_POINTER_DOWN:
			return "ACTION_POINTER_DOWN(" + index + ")";
		case MotionEvent.ACTION_POINTER_UP:
			return "ACTION_POINTER_UP(" + index + ")";
		default:
			return Integer.toString(action);
		}
	}
}
 
源代码20 项目: BigApp_Discuz_Android   文件: Compat.java
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private static int getPointerIndexHoneyComb(int action) {
    return (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
}