我需要从右到左捕捉手势动作,反之亦然(滑动) 为什么不起作用?
public boolean onTouchEvent(MotionEvent event)
{
float x = event.getX();
float y = event.getY();
int action = event.getAction();
int edgeFlags = event.getEdgeFlags();
switch (edgeFlags)
{
case MotionEvent.EDGE_LEFT:
sex=3; break;
case MotionEvent.EDGE_RIGHT:
sex=1;
break;
case MotionEvent.EDGE_TOP:
break;
case MotionEvent.EDGE_BOTTOM:
break;
default:
break;
}
return true;
}
它不适合我 - > How to detect the swipe left or Right in Android?
答案 0 :(得分:0)
尝试这种方法:
公共抽象类CustomGestureListener扩展GestureDetector.SimpleOnGestureListener实现Loggable {
private final View mView;
public CustomGestureListener(View view){
mView = view;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
mView.onTouchEvent(e);
return super.onSingleTapConfirmed(e);
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
onTouch();
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (e1.getX() < e2.getX()) {
return onSwipeRight();
}
if (e1.getX() > e2.getX()) {
return onSwipeLeft();
}
return onTouch();
}
public abstract boolean onSwipeRight();
public abstract boolean onSwipeLeft();
public abstract boolean onTouch();
}
查看this文章了解完整的源代码示例。
答案 1 :(得分:0)
因为只有当用户将拇指一直从屏幕边缘移开时才会返回边缘标记,这很少见。你需要转储这种方法。而是捕捉他们设置手指的点,保存位置和时间。当你得到匹配的事件时,比较位置和时间,并确保它是一个大多数水平移动,并在足够快的时间框架内。那将是一次轻扫。