2014-09-18 3 views
1

걸리고 싶습니다. 두 손가락으로 터치하십시오 (한 손가락 터치는 사용하지 말아야합니다). 불행히도 "두 손가락 터치"이벤트를 얻으려면 "한 손가락 터치"를 사용해야합니다. 나는 분명히 희망한다. 여기두 손가락 터치 만 사용하십시오.

내 코드 :

@Override 
public boolean onTouch(View v, MotionEvent m) 
{ 
    boolean consumed = false; 
    int pointerCount = m.getPointerCount(); 
    int action = m.getActionMasked(); 

    if(pointerCount == 2) 
    { 
     switch (action) 
     { 
      case MotionEvent.ACTION_DOWN: 
      case MotionEvent.ACTION_POINTER_DOWN: 
       consumed = true; 

       break; 
      case MotionEvent.ACTION_UP: 
       // Work 
       break; 
      case MotionEvent.ACTION_MOVE: 
       // Some stuff 
       break; 
      default: 
       break; 
     } 
    } 
    else if (pointerCount == 1 && action == MotionEvent.ACTION_DOWN) 
    { 
     // This is needed to get the 2 fingers touch events... 
     consumed = true; 
    } 

    return consumed; 
} 
+0

해결 했습니까? –

+0

Unfortunatly, no ... –

+0

어제 검색 후 시간이 지나도 필요할 경우를 대비하여 내 사용자 정의보기에서 모든 이벤트를 캡처하고보기와 관련된 이벤트를 전달했습니다. –

답변

1

나는 비슷한 문제로 실행하고 내 평면도 모든 접촉을 처리하고, 다음 뷰에 적절한 조치를 전파하여 내 문제를 해결했습니다. 나의 예에서는, 스케일링 제스처를 가로 챌 필요가있는 오버레이 레이어가 있었는데 (인식기가 내 생성자에 첨부되어 있음), 여전히 아래의 맵보기로 단일 터치를 전달합니다. 실제 터치 이벤트를지도보기에 전송하지 않았지만 상위보기에서 처리했으며 적절한 "패닝"작업을 내보기로 보냈습니다.

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if(event.getPointerCount() == 2) { 
     if(event.getActionMasked() == MotionEvent.ACTION_DOWN){ 
      CameraUpdate update = CameraUpdateFactory.newLatLng(initialCoords); 
      //attachedMapFragment.getMap().moveCamera(update); 
     } 
     scaleGestureDetector.onTouchEvent(event); 
    }else{ 
     if(attachedMapFragment != null) { 
      if(event.getActionMasked() == MotionEvent.ACTION_DOWN){ 
       initialCoords = attachedMapFragment.getMap().getCameraPosition().target; 
       lastTouchX = event.getX(); 
       lastTouchY = event.getY(); 
      }else if(event.getActionMasked() == MotionEvent.ACTION_MOVE){ 
       float deltaX = event.getX() - lastTouchX; 
       float deltaY = event.getY() - lastTouchY; 
       lastTouchX = event.getX(); 
       lastTouchY = event.getY(); 
       Projection projection = attachedMapFragment.getMap().getProjection(); 
       Point center = projection.toScreenLocation(attachedMapFragment.getMap().getCameraPosition().target); 
       Point newCenter = new Point(center.x - (int)deltaX, center.y - (int)deltaY); 
       LatLng newCoords = projection.fromScreenLocation(newCenter); 
       CameraUpdate update = CameraUpdateFactory.newLatLng(newCoords); 
       attachedMapFragment.getMap().moveCamera(update); 
      } 
     } 
    } 
    return true; 
} 

지도를 한 번만 움직여도 맞춤식보기에는 크기 인식기가 있습니다. 실제로,지도보기 전혀 접촉을 얻고있어, 내 사용자 정의보기는 위에서 본 행동을 "라우팅"했다. 항상 이상적인 것은 아니지만 많은 경우에 문제를 해결할 수 있습니다.