setOnTouchListener监听器问题
============问题描述============
代码如下:
private void initGameView() { setOnTouchListener(new View.OnTouchListener() { private float startX, startY, offsetX, offsetY; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: startX = event.getX(); startY = event.getY(); break; case MotionEvent.ACTION_UP: offsetX = event.getX() - startX; offsetY = event.getY() - startY; if (Math.abs(offsetX) > Math.abs(offsetY)) { if (offsetX < -5) { System.out.println("left"); } else if (offsetX > 5) { System.out.println("right"); } else { if (offsetY < -5) { System.out.println("up"); } else if (offsetY > 5) { System.out.println("down"); } } } break; } return true; }
左右的时候日志里面有显示,上下的时候不显示,这是为何?求解。。
============解决方案1============
如果要执行里面的else,offsetX要在-5到5之间,而Math.abs(offsetX) > Math.abs(offsetY),所以offsetY不会在-5和5之间。