拦截在不同的TextView附近滑动

时间:2014-02-13 12:15:52

标签: android ontouchevent ontouchlistener

我有三个textviews,tv_one和tv_two,tv_three,当用户从textview扫到另一个时,我会拦截滑动事件。

我写了这个

@Override
public boolean onTouch(View v, MotionEvent event) {

    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN: {
        //do something
        return true;
    }
    case MotionEvent.ACTION_UP: {
        // do something
        return true;
    }

    }
    return false;
}

通过这种方式,当用户按下第一个文本视图并从屏幕释放手指时,我可以拦截。我会知道如何拦截那些视图之间的滑动。 例如,如果用户从tv_one滑动到tv_three,app应该知道路径是从1到3。我该怎么办?

1 个答案:

答案 0 :(得分:2)

您可以使用视图坐标定义向下/向上位置。

@Override
public boolean onTouch(View v, MotionEvent event) {
    float currentX = event.getX();
    float currentY = event.getY();
    int action = event.getAction();
    switch (action & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN:
            startX = currentX;
            startY = currentY;
            return true;
        case MotionEvent.ACTION_MOVE:
            moveX = currentX;
            moveY = currentY;
            return true;
        case MotionEvent.ACTION_UP:
            upX = currentX;
            upY = currentY;
            return true;
    }
    return false;
}

并检查:

int top = tv_one.getTop();
int left = tv_one.getLeft();
int width = tv_one.getWidth();
int height = tv_one. getHeight();

RectF tv_one_rect = new RectF(left, top, left + width, top + height);
boolean insideTv_one = tv_one_rect.contains(moveX, moveY);