2013-06-02 2 views
0

화면에 여러 개의 버튼이 있습니다. 모두 같은 View.OnTouchListener를 사용합니다.버튼이 터치 이벤트를 수신하지 못하도록하고 Android에서 "터치 인"을 감지합니다.

내가 뭘하고 있는지 알아 보려면 내가 그 중 하나를 탭하면 ACTION_DOWN이되고, 움직이면 버튼 영역 바깥으로 이동해도 ACTION_MOVE가됩니다. 손을 뻗어 안으로 들어가면 아무것도 얻지 못합니다.

는 내가 원하는 "이벤트 전송을 중지", "이 지역 중 이벤트 전송을 중지"말하거나하는 방법이다 (그리고 이벤트가 지역 내에서인지 아닌지 내가 감지)

이 내 OnTouchListener입니다 :

당신의 설명을 바탕으로 는
OnTouchListener touchListenerPad=new OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 


       Log.d("PadControl", "event= "+event.getAction()); 
       if(v==up) 
       { 
        Log.d("PadControl", "btn= up"); 

        return false; 
       } 

       if(v==down) 
       { 
        Log.d("PadControl", "btn= down"); 

        return false; 
       } 

       if(v==right) 
       { 
        Log.d("PadControl", "btn= right"); 

        return false; 
       } 

       if(v==left) 
       { 
        Log.d("PadControl", "btn= left"); 

        return false; 
       } 
       return false; 
      } 
     }; 

     up.setOnTouchListener(touchListenerPad); 
     down.setOnTouchListener(touchListenerPad); 
     right.setOnTouchListener(touchListenerPad); 
     left.setOnTouchListener(touchListenerPad); 
+0

onTouch 대신 onClick을 사용하지 않는 이유는 무엇입니까? –

+0

왜냐하면 onClick (View v)은 탭을 눌렀을 때만 트리거됩니다. –

+0

터치를 감지하는 기능을 버튼 내부 또는 외부에 생성 하시겠습니까? –

답변

0

, 제가 생각했습니다 것은 당신이 당신의 버튼의 x와 y를 얻을 후 당신이에서 버튼의 영역을 절약 할 수 있습니다 View.getLocationOnScreen() 또는 getLocationInWindow()와 버튼의 위치를 ​​감지한다 처음으로 x와 x + 버튼 너비까지 y에서 y + 버튼 높이까지와 그 이후에 이벤트가 발생하면 이벤트를 제한 할 수 있습니다. 터치 이벤트의 x와 y가 MotionEvent.getRawX()MotionEvent.getRawY() 인 버튼이있는 지역 외부에 있습니다. 이 답변이 도움이되기를 바랍니다. 그러나 내 대답과 관련하여 다른 질문이 있으면 의견을 물어보십시오.

+0

해답을 주셔서 감사합니다.하지만 바깥에있을 때 이벤트를 무시하면 원하는 동작이 나타나지 않습니다. 이 버튼에 이벤트가 남아 있기 때문에 다른 버튼이 들릴 때까지 이벤트를받지 않는 것이 좋습니다. –

관련 문제