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

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

源代码1 项目: fanfouapp-opensource   文件: ImageViewTouch.java
@Override
public boolean onTouchEvent(final MotionEvent event) {
    this.mScaleDetector.onTouchEvent(event);
    if (!this.mScaleDetector.isInProgress()) {
        this.mGestureDetector.onTouchEvent(event);
    }
    final int action = event.getAction();
    switch (action & MotionEvent.ACTION_MASK) {
    case MotionEvent.ACTION_UP:
        if (getScale() < 1f) {
            zoomTo(1f, 50);
        }
        break;
    }
    return true;
}
 
源代码2 项目: panoramagl   文件: PLManager.java
public boolean onTouchEvent(MotionEvent event) {
    if (mIsRendererCreated && mRenderer.isRunning() && !mIsValidForTransition) {
        if (mGestureDetector.onTouchEvent(event))
            return true;
        switch (event.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_DOWN:
            case MotionEvent.ACTION_POINTER_DOWN:
                this.touchesBegan(this.getTouches(event), event);
                return true;
            case MotionEvent.ACTION_MOVE:
                this.touchesMoved(this.getTouches(event), event);
                return true;
            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_POINTER_UP:
                this.touchesEnded(this.getTouches(event), event);
                return true;
        }
    }
    return false;
}
 
源代码3 项目: zen4android   文件: NumberPicker.java
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
    final int action = event.getAction() & MotionEvent.ACTION_MASK;
    switch (action) {
        case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_UP:
            removeAllCallbacks();
            break;
    }
    return super.dispatchTouchEvent(event);
}
 
@Override
public boolean onTouchEvent(MotionEvent motionEvent) {

    // This switch block replaces the
    // if statement from the Sub Hunter game
    switch (motionEvent.getAction() &
            MotionEvent.ACTION_MASK) {

        // The player has put their finger on the screen
        case MotionEvent.ACTION_DOWN:

            // If the game was paused unpause
            mPaused = false;

            // Where did the touch happen
            if(motionEvent.getX() > mScreenX / 2){
                // On the right hand side
                mBat.setMovementState(mBat.RIGHT);
            }
            else{
                // On the left hand side
                mBat.setMovementState(mBat.LEFT);
            }

            break;

        // The player lifted their finger
        // from anywhere on screen.
        // It is possible to create bugs by using
        // multiple fingers. We will use more
        // complicated and robust touch handling
        // in later projects
        case MotionEvent.ACTION_UP:

            // Stop the bat moving
            mBat.setMovementState(mBat.STOPPED);
            break;
    }
    return true;
}
 
源代码5 项目: Noyze   文件: PopupWindow.java
/**
 * Called when a touch screen event was not handled by any of the views
 * under it. This is most useful to process touch events that happen outside
 * of your window bounds, where there is no view to receive it.
 * 
 * @param event The touch screen event being processed.
 * @return Return true if you have consumed the event, false if you haven't.
 *         The default implementation will cancel the dialog when a touch
 *         happens outside of the window bounds.
 */
@Override
public boolean onTouch(View v, MotionEvent event) {
	final boolean outOfBounds = isOutOfBounds(event);
    if (mShowing && shouldCloseOnTouch(event)) {
        hide();
        return true;
    } else if (mShowing && !outOfBounds &&
    		   (event.getActionMasked() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_DOWN) {
    	onUserInteraction();
    }
    
    return false;
}
 
源代码6 项目: biermacht   文件: DragSortListView.java
private void saveTouchCoords(MotionEvent ev) {
  int action = ev.getAction() & MotionEvent.ACTION_MASK;
  if (action != MotionEvent.ACTION_DOWN) {
    mLastX = mX;
    mLastY = mY;
  }
  mX = (int) ev.getX();
  mY = (int) ev.getY();
  if (action == MotionEvent.ACTION_DOWN) {
    mLastX = mX;
    mLastY = mY;
  }
  mOffsetX = (int) ev.getRawX() - mX;
  mOffsetY = (int) ev.getRawY() - mY;
}
 
源代码7 项目: KChartView   文件: MinuteChartView.java
@Override
public boolean onTouchEvent(MotionEvent event) {
    this.mDetector.onTouchEvent(event);
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN:
            break;
        case MotionEvent.ACTION_MOVE:
            //一个点的时候滑动
            if (event.getPointerCount() == 1) {
                //长按之后移动
                if (isLongPress) {
                    calculateSelectedX(event.getX());
                    invalidate();
                }
            }
            break;
        case MotionEvent.ACTION_UP:
            isLongPress = false;
            invalidate();
            break;
        case MotionEvent.ACTION_CANCEL:
            isLongPress = false;
            invalidate();
            break;
    }
    return true;
}
 
源代码8 项目: CodeEditor   文件: FreeScrollingTextField.java
@Override
public boolean onTouchEvent(MotionEvent event) {
    if (isFocused()) {
        _navMethod.onTouchEvent(event);
    } else {
        if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP
                && isPointInView((int) event.getX(), (int) event.getY())) {
            // somehow, the framework does not automatically change the focus
            // to this view when it is touched
            requestFocus();
        }
    }
    return true;
}
 
源代码9 项目: 8bitartist   文件: DrawView.java
@Override
public boolean onTouch(View arg0, MotionEvent me) {
    if (!touchEnabled) {
        return false;
    }

    switch (me.getAction() & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN:
        case MotionEvent.ACTION_MOVE:
            // Find where the touch event, which is in pixels, maps
            // to our 10x10 grid. (0,0) is in the upper left, (9, 9)
            // is in the lower right.
            int gridX = (int) Math.floor(1.0 * me.getX() / mHeightInPixels
                    * GRID_SIZE);
            int gridY = (int) Math.floor(1.0 * me.getY() / mHeightInPixels
                    * GRID_SIZE);

            Log.d(TAG, "You touched " + gridX + " " + gridY + "/" + me.getY());

            if (gridX < GRID_SIZE && gridY < GRID_SIZE && gridX >= 0
                    && gridY >= 0) {

                short oldColor = grid[gridX][gridY];
                grid[gridX][gridY] = mSelectedColor;

                // Don't double-draw or send messages where the color does not change
                boolean notSameSpot = (lastGridX != gridX) || (lastGridY != gridY);
                boolean notSameColor = oldColor != mSelectedColor;
                if (notSameSpot && notSameColor) {
                    mListener.onDrawEvent(gridX, gridY, mSelectedColor);
                    lastGridX = gridX;
                    lastGridY = gridY;
                }
            }

            return true;
    }

    return false;
}
 
源代码10 项目: kAndroid   文件: ScrollAndScaleView.java
@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN:
            touch = true;
            break;
        case MotionEvent.ACTION_MOVE:
            if (event.getPointerCount() == 1) {
                //长按之后移动
                if (isLongPress || !isClosePress) {
                    onLongPress(event);
                }
            }
            break;
        case MotionEvent.ACTION_POINTER_UP:
            invalidate();
            break;
        case MotionEvent.ACTION_UP:
            if (!isClosePress) {
                isLongPress = false;
            }
            touch = false;
            invalidate();
            break;
        case MotionEvent.ACTION_CANCEL:
            if (!isClosePress) {
                isLongPress = false;
            }
            touch = false;
            invalidate();
            break;
    }
    mMultipleTouch = event.getPointerCount() > 1;
    this.mDetector.onTouchEvent(event);
    this.mScaleDetector.onTouchEvent(event);
    return true;
}
 
源代码11 项目: UltimateAndroid   文件: BaseGestureDetector.java
/**
* All gesture detectors need to be called through this method to be able to
* detect gestures. This method delegates work to handler methods
* (handleStartProgressEvent, handleInProgressEvent) implemented in
* extending classes.
* 
* @param event
* @return
*/
  public boolean onTouchEvent(MotionEvent event){
  	final int actionCode = event.getAction() & MotionEvent.ACTION_MASK;
  	if (!mGestureInProgress) {
  		handleStartProgressEvent(actionCode, event);
  	} else {
  		handleInProgressEvent(actionCode, event);
  	}
  	return true;
  }
 
@Override
protected boolean processDispatchTouchEvent(MotionEvent ev) {
    if (mAutoHintCanBeInterrupted) {
        mNeedFilterRefreshEvent = false;
        mDurationToStayAtHint = 0;
        final int action = ev.getAction() & MotionEvent.ACTION_MASK;
        if (action == MotionEvent.ACTION_DOWN) removeCallbacks(mDelayToBackToTopRunnable);
    }
    return super.processDispatchTouchEvent(ev);
}
 
源代码13 项目: Swface   文件: StickyListHeadersListView.java
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    int action = ev.getAction() & MotionEvent.ACTION_MASK;
    if (action == MotionEvent.ACTION_DOWN) {
        mDownY = ev.getY();
        mHeaderOwnsTouch = mHeader != null && mDownY <= mHeader.getHeight() + mHeaderOffset;
    }

    boolean handled;
    if (mHeaderOwnsTouch) {
        if (mHeader != null && Math.abs(mDownY - ev.getY()) <= mTouchSlop) {
            handled = mHeader.dispatchTouchEvent(ev);
        } else {
            if (mHeader != null) {
                MotionEvent cancelEvent = MotionEvent.obtain(ev);
                cancelEvent.setAction(MotionEvent.ACTION_CANCEL);
                mHeader.dispatchTouchEvent(cancelEvent);
                cancelEvent.recycle();
            }

            MotionEvent downEvent = MotionEvent.obtain(ev.getDownTime(), ev.getEventTime(), ev.getAction(), ev.getX(), mDownY, ev.getMetaState());
            downEvent.setAction(MotionEvent.ACTION_DOWN);
            handled = mList.dispatchTouchEvent(downEvent);
            downEvent.recycle();
            mHeaderOwnsTouch = false;
        }
    } else {
        handled = mList.dispatchTouchEvent(ev);
    }

    return handled;
}
 
@Override
public void handleInput(MotionEvent event, GameState gameState, ArrayList<Rect> buttons) {
   // In each MotionEvent object, every active pointer is present. Therefore looping through them all for an event on only one of them is obviously wrong.
    // The getActionIndex returns the index in the array of the pointer that performed/trigged the action/method call. So using getX(i) and getY(i) only gets a true result
    // on the button that was actually pressed/removed!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    int i = event.getActionIndex();
    int x = (int) event.getX(i);
    int y = (int) event.getY(i);

    switch (event.getAction() & MotionEvent.ACTION_MASK) {

        case MotionEvent.ACTION_UP:
            if (buttons.get(HUD.UP).contains(x,y)
                    || buttons.get(HUD.DOWN).contains(x,y)) {

                // Player has released either up or down
                mTransform.stopVertical();
            }
            break;

        case MotionEvent.ACTION_DOWN:
            if (buttons.get(HUD.UP).contains(x,y)) {
                // Player has pressed up
                mTransform.headUp();
            } else if (buttons.get(HUD.DOWN).contains(x,y)) {
                // Player has pressed down
                mTransform.headDown();
            } else if (buttons.get(HUD.FLIP).contains(x,y)) {
                // Player has released the flip button
                mTransform.flip();
            } else if (buttons.get(HUD.SHOOT).contains(x,y)) {
                mPLS.spawnPlayerLaser(mTransform);
            }
            break;

        case MotionEvent.ACTION_POINTER_UP:
            if (buttons.get(HUD.UP).contains(x, y)
                    || buttons.get(HUD.DOWN).contains(x, y)) {
                // Player has released either up or down
                mTransform.stopVertical();
            }
            break;

        case MotionEvent.ACTION_POINTER_DOWN:
            if (buttons.get(HUD.UP).contains(x, y)) {
                // Player has pressed up
                mTransform.headUp();
            } else if (buttons.get(HUD.DOWN).contains(x, y)) {
                // Player has pressed down
                mTransform.headDown();
            } else if (buttons.get(HUD.FLIP).contains(x, y)) {
                // Player has released the flip button
                mTransform.flip();
            } else if (buttons.get(HUD.SHOOT).contains(x, y)) {
                mPLS.spawnPlayerLaser(mTransform);
            }
            break;
    }
}
 
源代码15 项目: WaveHeartRate   文件: BarLineChartTouchListener.java
@Override
public boolean onTouch(View v, MotionEvent event) {
    
    if(mode == NONE) {
        mGestureDetector.onTouchEvent(event);
    }
    
    if(!mChart.isDragEnabled()) return true;

    // Handle touch events here...
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN:
            savedMatrix.set(matrix);
            start.set(event.getX(), event.getY());
            break;
        case MotionEvent.ACTION_POINTER_DOWN:
            oldDist = spacing(event);
            Log.d("TouchListener", "oldDist=" + oldDist);
            if (oldDist > 10f) { 
                savedMatrix.set(matrix);
                midPoint(mid, event);
                mode = ZOOM;
                mChart.disableScroll();
                Log.d("TouchListener","mode=ZOOM");
            }
            break;

        case MotionEvent.ACTION_UP:
            if (mode == NONE) {
            }
            Log.d("TouchListener","mode=NONE");
            mode = NONE;
            mChart.enableScroll();
            break;
        case MotionEvent.ACTION_POINTER_UP:
            Log.d("TouchListener","mode=POSTZOOM");
            mode = POSTZOOM;
            break;
        case MotionEvent.ACTION_MOVE:
            if (mode == NONE && distance(event.getX(), start.x, event.getY(), start.y) > 25f) {
                savedMatrix.set(matrix);
                start.set(event.getX(), event.getY());
                Log.d("TouchListener","mode=DRAG");
                mode = DRAG;
                mChart.disableScroll();
            } else if (mode == DRAG) {
                matrix.set(savedMatrix);
                matrix.postTranslate(event.getX() - start.x, 0);
            } else if (mode == ZOOM) {
                float newDist = spacing(event);
                Log.d("TouchListener","newDist=" + newDist);
                if (newDist > 10f) {
                    float scale = newDist / oldDist;
                    float[] values = new float[9];
                    matrix.getValues(values);
                    float oldScale = values[0];
                    if ((scale < 1 || oldScale < mChart.getMaxScale())
                            && (scale > 1 || oldScale > MIN_SCALE)) {
                        matrix.set(savedMatrix);
                        matrix.postScale(scale, 1, mid.x, mid.y);
                    }
                }
            }
            else if (mode == LONGPRESS) {
                mChart.disableScroll();
            }
            break;
    }

    // Perform the transformation
    matrix = mChart.refreshTouch(matrix);

    return true; // indicate event was handled
}
 
源代码16 项目: StackCardsView   文件: SwipeTouchHelper.java
@Override
public boolean onTouchEvent(MotionEvent ev) {
    final int action = ev.getAction() & MotionEvent.ACTION_MASK;
    if (mTouchChild == null) {
        return false;
    }
    mVelocityTracker.addMovement(ev);
    switch (action) {
        case MotionEvent.ACTION_DOWN: {
            log(TAG, "onTouchEvent ACTION_DOWN");
            if (!mOnTouchableChild) {
                return false;
            }
            break;
        }
        case MotionEvent.ACTION_MOVE: {
            //子view未消费down事件时,mIsBeingDragged为false
            log(TAG, "onTouchEvent ACTION_MOVE,mActivePointerId=" + mActivePointerId);
            if (mActivePointerId == INVALID_POINTER) {
                log(TAG, "onTouchEvent ACTION_MOVE,INVALID_POINTER");
                break;
            }
            int pointerIndex = ev.findPointerIndex(mActivePointerId);
            float x = ev.getX(pointerIndex);
            float y = ev.getY(pointerIndex);
            if (!mIsBeingDragged) {
                cancelSpringIfNeeded();
                float dx = x - mInitDownX;
                float dy = y - mInitDownY;
                if ((Math.abs(dx) <= mDragSlop && (Math.abs(dy) <= mDragSlop)) || !canDrag(dx, dy)) {
                    mLastX = x;
                    mLastY = y;
                    return false;
                }
                mIsBeingDragged = true;
            }
            performDrag(x - mLastX, y - mLastY);
            mLastX = x;
            mLastY = y;
            break;
        }
        case MotionEvent.ACTION_POINTER_DOWN:
            log(TAG, "onTouchEvent ACTION_POINTER_DOWN");
            break;
        case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_UP: {
            log(TAG, "onTouchEvent ACTION_UP,mActivePointerId=" + mActivePointerId);
            if (mActivePointerId == INVALID_POINTER) {
                break;
            }
            onTouchRelease();
            break;
        }
        case MotionEvent.ACTION_POINTER_UP: {
            log(TAG, "onTouchEvent ACTION_POINTER_UP,mActivePointerId=" + mActivePointerId);
            int activePointerIndex = ev.findPointerIndex(mActivePointerId);
            if (activePointerIndex == ev.getActionIndex()) {
                onTouchRelease();
            }
            break;
        }
    }
    return true;
}
 
源代码17 项目: LLApp   文件: PinchImageView.java
@Override
public boolean onTouchEvent(MotionEvent event) {
    super.onTouchEvent(event);
    int action = event.getAction() & MotionEvent.ACTION_MASK;
    //最后一个点抬起或者取消,结束所有模式
    if(action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
        //如果之前是缩放模式,还需要触发一下缩放结束动画
        if (mPinchMode == PINCH_MODE_SCALE) {
            scaleEnd();
        }
        mPinchMode = PINCH_MODE_FREE;
    } else if (action == MotionEvent.ACTION_POINTER_UP) {
        //多个手指情况下抬起一个手指,此时需要是缩放模式才触发
        if (mPinchMode == PINCH_MODE_SCALE) {
            //抬起的点如果大于2,那么缩放模式还有效,但是有可能初始点变了,重新测量初始点
            if (event.getPointerCount() > 2) {
                //如果还没结束缩放模式,但是第一个点抬起了,那么让第二个点和第三个点作为缩放控制点
                if (event.getAction() >> 8 == 0) {
                    saveScaleContext(event.getX(1), event.getY(1), event.getX(2), event.getY(2));
                    //如果还没结束缩放模式,但是第二个点抬起了,那么让第一个点和第三个点作为缩放控制点
                } else if (event.getAction() >> 8 == 1) {
                    saveScaleContext(event.getX(0), event.getY(0), event.getX(2), event.getY(2));
                }
            }
            //如果抬起的点等于2,那么此时只剩下一个点,也不允许进入单指模式,因为此时可能图片没有在正确的位置上
        }
        //第一个点按下,开启滚动模式,记录开始滚动的点
    } else if (action == MotionEvent.ACTION_DOWN) {
        //在矩阵动画过程中不允许启动滚动模式
        if (!(mScaleAnimator != null && mScaleAnimator.isRunning())) {
            //停止所有动画
            cancelAllAnimator();
            //切换到滚动模式
            mPinchMode = PINCH_MODE_SCROLL;
            //保存触发点用于move计算差值
            mLastMovePoint.set(event.getX(), event.getY());
        }
        //非第一个点按下,关闭滚动模式,开启缩放模式,记录缩放模式的一些初始数据
    } else if (action == MotionEvent.ACTION_POINTER_DOWN) {
        //停止所有动画
        cancelAllAnimator();
        //切换到缩放模式
        mPinchMode = PINCH_MODE_SCALE;
        //保存缩放的两个手指
        saveScaleContext(event.getX(0), event.getY(0), event.getX(1), event.getY(1));
    } else if (action == MotionEvent.ACTION_MOVE) {
        if (!(mScaleAnimator != null && mScaleAnimator.isRunning())) {
            //在滚动模式下移动
            if (mPinchMode == PINCH_MODE_SCROLL) {
                //每次移动产生一个差值累积到图片位置上
                scrollBy(event.getX() - mLastMovePoint.x, event.getY() - mLastMovePoint.y);
                //记录新的移动点
                mLastMovePoint.set(event.getX(), event.getY());
                //在缩放模式下移动
            } else if (mPinchMode == PINCH_MODE_SCALE && event.getPointerCount() > 1) {
                //两个缩放点间的距离
                float distance = MathUtils.getDistance(event.getX(0), event.getY(0), event.getX(1), event.getY(1));
                //保存缩放点中点
                float[] lineCenter = MathUtils.getCenterPoint(event.getX(0), event.getY(0), event.getX(1), event.getY(1));
                mLastMovePoint.set(lineCenter[0], lineCenter[1]);
                //处理缩放
                scale(mScaleCenter, mScaleBase, distance, mLastMovePoint);
            }
        }
    }
    //无论如何都处理各种外部手势
    mGestureDetector.onTouchEvent(event);
    return true;
}
 
源代码18 项目: LoyalNativeSlider   文件: GalleryViewPager.java
@Override
public boolean onTouchEvent(MotionEvent event) {

    if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP) {
        //super.onInterceptTouchEvent(event);

        float endX = event.getX();
        float endY = event.getY();
        if (isAClick(startX, endX, startY, endY)) {
            if (mOnItemClickListener != null) {
                mOnItemClickListener.onItemClicked(mCurrentView, getCurrentItem());
            }
            //launchFullPhotoActivity(imageUrls);// WE HAVE A CLICK!!
        } else {
            super.onTouchEvent(event);
        }
    }

    if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_DOWN) {
        startX = event.getX();
        startY = event.getY();
    }

    /*if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP)
    {
        super.onTouchEvent(event);
    }*/

    float[] difference = handleMotionEvent(event);

    if (mCurrentView.pagerCanScroll()) {
        return super.onTouchEvent(event);
    } else {
        if (difference != null && mCurrentView.onRightSide && difference[0] < 0) //move right
        {
            return super.onTouchEvent(event);
        }
        if (difference != null && mCurrentView.onLeftSide && difference[0] > 0) //move left
        {
            return super.onTouchEvent(event);
        }
        if (difference == null && (mCurrentView.onLeftSide || mCurrentView.onRightSide)) {
            return super.onTouchEvent(event);
        }
    }

    return false;
}
 
@Override
public boolean onTouchEvent(MotionEvent ev) {
    if (mIgnoreTouchEvent) {
        mIgnoreTouchEvent = false;
        return false;
    }

    if (!mDragEnabled) {
        return super.onTouchEvent(ev);
    }

    boolean more = false;

    boolean lastCallWasIntercept = mLastCallWasIntercept;
    mLastCallWasIntercept = false;

    if (!lastCallWasIntercept) {
        saveTouchCoords(ev);
    }

    // if (mFloatView != null) {
    if (mDragState == DRAGGING) {
        onDragTouchEvent(ev);
        more = true; // give us more!
    } else {
        // what if float view is null b/c we dropped in middle
        // of drag touch event?

        // if (mDragState != STOPPED) {
        if (mDragState == IDLE) {
            if (super.onTouchEvent(ev)) {
                more = true;
            }
        }

        int action = ev.getAction() & MotionEvent.ACTION_MASK;

        switch (action) {
            case MotionEvent.ACTION_CANCEL:
            case MotionEvent.ACTION_UP:
                doActionUpOrCancel();
                break;
            default:
                if (more) {
                    mCancelMethod = ON_TOUCH_EVENT;
                }
        }
    }

    return more;
}
 
源代码20 项目: onpc   文件: DragSortListView.java
@Override
public boolean onTouchEvent(MotionEvent ev)
{
    if (mIgnoreTouchEvent)
    {
        mIgnoreTouchEvent = false;
        return false;
    }

    if (!mDragEnabled)
    {
        return super.onTouchEvent(ev);
    }

    boolean more = false;

    boolean lastCallWasIntercept = mLastCallWasIntercept;
    mLastCallWasIntercept = false;

    if (!lastCallWasIntercept)
    {
        saveTouchCoords(ev);
    }

    // if (mFloatView != null) {
    if (mDragState == DRAGGING)
    {
        onDragTouchEvent(ev);
        more = true; // give us more!
    }
    else
    {
        // what if float view is null b/c we dropped in middle
        // of drag touch event?

        // if (mDragState != STOPPED) {
        if (mDragState == IDLE)
        {
            if (super.onTouchEvent(ev))
            {
                more = true;
            }
        }

        int action = ev.getAction() & MotionEvent.ACTION_MASK;

        switch (action)
        {
        case MotionEvent.ACTION_CANCEL:
        case MotionEvent.ACTION_UP:
            doActionUpOrCancel();
            break;
        default:
            if (more)
            {
                mCancelMethod = ON_TOUCH_EVENT;
            }
        }
    }

    return more;
}