2014-10-09 1 views
0

핀치 확대/축소 제스처를 가로로 사용하면 스 와이프 기능은 눌린 좌표와 해제 된 좌표의 특정 차이에 도달하면 항상 호출됩니다.webview에서 스 와이프 기능을 호출하지 않고 핀치 줌을 사용하려면 어떻게해야합니까?

어떻게 해결할 수 있습니까?

는 웹보기

view.getSettings().setBuiltInZoomControls(true); 
    view.getSettings().setSupportZoom(true); 
    view.getSettings().setDisplayZoomControls(false); 

스 와이프 기능

protected void swipePage(View v, MotionEvent event, int book) { 
    int action = MotionEventCompat.getActionMasked(event); 

    switch (action) { 
    case (MotionEvent.ACTION_DOWN): 
     swipeOriginX = event.getX(); 
     swipeOriginY = event.getY(); 
     break; 

    case (MotionEvent.ACTION_UP): 
     int quarterWidth = (int) (screenWidth * 0.3); 
     float diffX = swipeOriginX - event.getX(); 
     float diffY = swipeOriginY - event.getY(); 
     float absDiffX = Math.abs(diffX); 
     float absDiffY = Math.abs(diffY); 

     if ((diffX > quarterWidth) && (absDiffX > absDiffY)) { 
      try { 
       navigator.goToNextChapter(index); 
      } catch (Exception e) { 
       errorMessage(getString(R.string.error_cannotTurnPage)); 
      } 
     } else if ((diffX < -quarterWidth) && (absDiffX > absDiffY)) { 
      try { 
       navigator.goToPrevChapter(index); 
      } catch (Exception e) { 
       errorMessage(getString(R.string.error_cannotTurnPage)); 
      } 
     } 
     break; 
    } 
} 

답변

0

검사의 경우이 작업에 대한 설정입니다 - 한 손가락 터치 만 슬쩍이 할 경우 조건이 확인하는 경우를했습니다. "이벤트"변수를 로컬 변수로 변경하십시오.

if(event.getPointerCount() == 1) 
    { 
    switch (action) { 
    case (MotionEvent.ACTION_DOWN): 
      swipeOriginX = event.getX(); 
      swipeOriginY = event.getY(); 
      break; 

    case (MotionEvent.ACTION_UP): 

    int quarterWidth = (int) (screenWidth * 0.3); 
    float diffX = swipeOriginX - event.getX(); 
    float diffY = swipeOriginY - event.getY(); 
    float absDiffX = Math.abs(diffX); 
    float absDiffY = Math.abs(diffY); 

    if ((diffX > quarterWidth) && (absDiffX > absDiffY)) { 
     x = 1; 
     try { 
      navigator.goToNextChapter(index); 
      x = 0; 
     } catch (Exception e) { 
      x = 1; 
      errorMessage(getString(R.string.error_cannotTurnPage)); 
     } 
    } else if ((diffX < -quarterWidth) && (absDiffX > absDiffY)) { 
     x = 1; 
     try { 
      navigator.goToPrevChapter(index); 
      x = 0; 
     } catch (Exception e) { 
      x = 1; 
      errorMessage(getString(R.string.error_cannotTurnPage)); 
     } 


    break;  
    } 
    } 
} 
else if(event.getPointerCount()==2) 
{ 
    // code for pinch zoom 
} 
+0

피치 줌은 WebView 용 내장 코드를 사용하고 있습니다. 방금 내 WebView 설정에서 핀치 확대/축소 기능을 활성화했습니다. – Cedu

관련 문제