如果在某些特定 ListView 的行中做出这些手势,我需要停止 ListView 以响应用户手势 - 怎么做?目标 ListView 的行视图设置了 onTouchListener,由于 ListView 向上/向下滚动,我无法识别滑动/翻转。因此,如果我将手指向上或向下移动一点 - ListView 会拦截它并沿相应的方向滚动。所以我需要以某种方式来控制它,就像 Y 坐标的变化超过一定数量 - 让 ListView 滚动,如果没有 - 将手势识别为投掷/滑动。OnTouchListener 是
private int SWIPE_MIN_DISTANCE = 1;
private int SWIPE_MAX_OFF_PATH = 300;
final OnTouchListener flingSwipeListener = new OnTouchListener() {
float touchX;
float touchY;
@Override
public boolean onTouch(final View view, final MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
touchX = event.getX();
touchY = event.getY();
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
if (Math.abs(touchY - event.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left swipe
else if (touchX - event.getX() > SWIPE_MIN_DISTANCE){
Log.i("flingSwipe","right to left swipe");
}
// left to right swipe
else if (event.getX() - touchX > SWIPE_MIN_DISTANCE){
Log.i("flingSwipe","left to right swipe");
}
}
return true;
}
};
这个 onTouchListner 被设置为一个特定的行。我需要在 onTouchListener 识别手势时冻结 ListView,但如果失败,我需要将 MotionEvent 发送到 ListView。