我有三个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。我该怎么办?
答案 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);