2011-12-01 3 views
2

저는 SurfaceView가 있고 MotionEvent Action_Up을 인식하려고하지만 Action_Down 이벤트 만 트리거됩니다. 또한 첫 번째 손가락이 화면에 여전히있는 동안 다른 터치를 인식하고 싶지만 OnTouch 이벤트가 다시 트리거되지 않습니다.Android 터치 문제

@Override 
public boolean onTouch(View arg0, MotionEvent event) { 
    int pointerCount = event.getPointerCount(); 
    if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) { 
     //blabla 
    } else /* if (event.getAction() == android.view.MotionEvent.ACTION_UP) */{ 
     //blabla 
    } 
    return false; 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    int pointerCount = event.getPointerCount(); 
    if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) { 
     //blabla 
    } else /* if (event.getAction() == android.view.MotionEvent.ACTION_UP) */{ 
     //blabla 
    } 
    return super.onTouchEvent(event); 
} 

는 pointerCount에 상관없이 화면에 얼마나 많은 손가락, 항상 1입니다.

답변

1

당신이 (등 ACTION_MOVE, ACTION_UP)이 터치와 관련된 나머지 이벤트에 대한 알림 메시지를 받고자하는 경우, 당신은 당신의 OnTouchListenerACTION_DOWN 이벤트에 대해서 true를 돌려 줄 필요가

나는 또한 추천 할 것 중 하나 접촉을 모니터링 리스너를 사용하거나 뷰의 onTouchEvent 메소드에서 ... 둘 다 사용하지 마십시오.

HTH

0

변수에 getAction을 캡처 대신 당신의 onTouch에서 여러 번 호출하십시오. 또한 청취자가 작업이 소비되는 시점을 알려주도록하십시오. 화면에 손가락의 수에 관해서는, 멀티 터치 지원을 기억

public boolean onTouch(View v, MotionEvent event) { 
      final int action = event.getAction(); 
      boolean consumed = false; 
      switch(action){ 
        case MotionEvent.ACTION_DOWN: 
        //down stuff logic 
          consumed = true; 
        break; 
        case MotionEvent.ACTION_UP: 
        //up stuff logic 
          consumed = true; 
        break; 
        case MotionEvent.ACTION_MOVE: 
        //move stuff logic 
          consumed = true; 
        break; 
      } 
      return consumed; 
    } 

그래서 귀하의 휴대 전화에 따라 API 레벨 5에서 ​​시작/minSDK 당신은 그것을 가지고하지 않을 수 있습니다.