Question

i have three textviews, tv_one and tv_two, tv_three and i would intercept swipe event when user swipe from a textview to another.

I've write this

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

In this way i can intercept when user press first textview and when release his finger from the screen. i would know how can i do for intercept swipe between that views. For example, if user swipe from tv_one to tv_three, app should know that path was from one to three. how can i do?

Was it helpful?

Solution

You can use View coordinates for define down/up position.

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

And check:

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);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top