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之间。
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号