代码中的左右滑动可以被监听到,上下滑动却监听不到,求大神们指点,代码如下:
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;
}
实际情况下,上下滑动肯定不可能是完全垂直的,偏差个几十像素都有可能,你这个左右像素就限制一个5像素,肯定会屏蔽掉上下滑动的呀。
这种情况你要根据offsetX 和 offsetY 中绝对值较大的那个先来判断左右还是上下,不能先就在左右里看,如果某个手势 offsetX 是10 而 offsetY 是 100,明显这个动作是下滑,而你的程序就会识别成右滑。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。