【问题标题】:How can I use pinch zoom without calling my swipe function in webview?如何使用捏缩放而不在 webview 中调用我的滑动功能?
【发布时间】:2014-10-13 15:57:29
【问题描述】:

当我在水平方向上使用捏缩放手势时,当达到按下坐标和释放坐标的一定差异时,总是调用滑动函数。

我该如何解决这个问题?

这是网页视图的设置

    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;
    }
}

【问题讨论】:

    标签: android webview swipe gesture pinchzoom


    【解决方案1】:

    检查这项工作 - 设置一个 if 条件检查是否存在单指触摸,然后只进行滑动。将“事件”变量更改为您的局部变量。

     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
     }
    

    【讨论】:

    • 它不起作用.. 我正在使用 WebView 的内置代码的捏缩放。我刚刚在 WebView 的设置中启用了捏合缩放功能。
    猜你喜欢
    • 1970-01-01
    • 2011-06-28
    • 2011-10-30
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 2020-03-30
    相关资源
    最近更新 更多