Android 截取在不同的近文本视图上的滑动

Android 截取在不同的近文本视图上的滑动,android,touch-event,ontouchlistener,Android,Touch Event,Ontouchlistener,我有三个文本视图,tv_1和tv_2,tv_3,当用户从一个文本视图滑动到另一个文本视图时,我会拦截滑动事件 这是我写的 @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { //do something return true; } cas

我有三个文本视图,tv_1和tv_2,tv_3,当用户从一个文本视图滑动到另一个文本视图时,我会拦截滑动事件

这是我写的

@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;
}
通过这种方式,我可以在用户第一次按textview时以及在将手指从屏幕上松开时进行拦截。我知道如何在视图之间进行截取滑动。
例如,若用户从tv_1滑动到tv_3,应用程序应该知道路径是从1到3。如何操作?

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

@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);

我认为你应该让你的onTouch事件在一个包含三个文本视图的布局上,然后计算git event.getX和event.getY,在每个点上触摸,然后你就可以知道是否从一个文本视图开始刷到另一个文本视图