2011-10-11 2 views
2

어떻게 GestureDetector를 onItemLongClick과 통합 할 수 있습니까?onItemLongclick이있는 GestureDetector

나는 3 개의 이미지를 포함하는 GridView를 가지고있다. 첫 번째 이미지를 터치하면 토스트 메시지를 표시하려고합니다. 화면에서 손가락을 들어 올리면 두 번째 토스트 메시지를 표시하려고합니다.

GestureDetector는 MotionEvent를 사용하지만 onItemLongClick은 사용하지 않습니다. 그러나이 경우 그리드에서 이미지의 위치 ID를 추적해야하므로 내부 onTouch()를 구현할 수 없습니까?

+0

원하는 모든 이벤트가 onTouchEvent이고 원하는 모션 이벤트를 스니핑해야 할 때 왜 longclick이 필요한가요? http://developer.android.com/reference/android/view/MotionEvent.html – JPM

+0

안녕하세요, 첫 번째 이미지를 터치하고 두 번째 이미지로 손가락을 드래그하지 않고 드래그하면 MotionEvent가이 동작을 추적 할 수 있습니까? ? 아니요, 어떤 클래스를 사용해야합니까? – star

답변

0

이 클래스를 사용하여 커서의 화면 터치 또는 트랙볼 이동 여부와 상관없이 커서의 움직임을 추적 할 수 있으며 다음 그림으로 넘어 가서 해당 이벤트를 처리 할 수 ​​있습니다.

@Override public boolean onTouchEvent(MotionEvent event) { 
     int action = event.getActionMasked(); 
     if (action != MotionEvent.ACTION_UP && action != MotionEvent.ACTION_CANCEL) { 
      int N = event.getHistorySize(); 
      int P = event.getPointerCount(); 
      for (int i = 0; i < N; i++) { 
       for (int j = 0; j < P; j++) { 
        mCurX = event.getHistoricalX(j, i); 
        mCurY = event.getHistoricalY(j, i); 
        drawPoint(mCurX, mCurY, 
          event.getHistoricalPressure(j, i), 
          event.getHistoricalTouchMajor(j, i)); 
       } 
      } 
      for (int j = 0; j < P; j++) { 
       mCurX = event.getX(j); 
       mCurY = event.getY(j); 
       drawPoint(mCurX, mCurY, event.getPressure(j), event.getTouchMajor(j)); 
      } 
     } 
     return true; 
    } 

당신은 더 읽고 C에서 귀하의 SDK에서 파일을 볼 수 있습니다 : 여기 SDK 예제에서 가져온 예입니다 \ YourInstallDir 안드로이드 SDK의 \ 샘플 안드로이드-10 \ ApiDemos에를 \ \ \ SRC \ COM \ example \ android \ apis \ graphics \ TouchPaint.java 또는 전체 예제 파일에서 MotionEvent를 검색하면 더 많은 용도가 있습니다.

+0

예를 들어 주셔서 감사합니다. 어떤 요소가 포커스되어 있는지 추적 할 수있는 방법이 없다는 것이 궁금하다. – star

+0

자신을 직접 처리하거나 반사를 사용해야 할 수도 있습니다. – JPM

관련 문제