setOnTouchListener监听器问题

fanzhengwu 2014-10-22 09:12:48
代码如下:
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;



}

左右的时候日志里面有显示,上下的时候不显示,这是为何?求解。。
...全文
285 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanzhengwu 2014-10-22
  • 打赏
  • 举报
回复
引用 4 楼 u011921395 的回复:
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");
                            }
                        }
谢谢你,解决了
dingding_tmp 2014-10-22
  • 打赏
  • 举报
回复
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");
                            }
                        }
dingding_tmp 2014-10-22
  • 打赏
  • 举报
回复
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");
                            }
                         
                    }
fanzhengwu 2014-10-22
  • 打赏
  • 举报
回复
引用 1 楼 u011921395 的回复:
如果要执行里面的else,offsetX要在-5到5之间,而Math.abs(offsetX) > Math.abs(offsetY),所以offsetY不会在-5和5之间。
您能不能帮我改一下,新手不太会,谢谢
dingding_tmp 2014-10-22
  • 打赏
  • 举报
回复
如果要执行里面的else,offsetX要在-5到5之间,而Math.abs(offsetX) > Math.abs(offsetY),所以offsetY不会在-5和5之间。

80,354

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧