Отключить перемещение страницы, когда я провожу вниз в веб-просмотре - PullRequest
0 голосов
/ 30 января 2019

У меня есть Webview, в котором при касании для перемещения влево или вправо страница должна перемещаться, но при прокрутке вниз она не должна переходить на следующую страницу.Как ограничить веб-страницу, чтобы не двигаться, когда я проведу вниз.Проблема в onFling.Потому что когда я провожу пальцем влево или вправо, он печатает true и переходит на следующую страницу.Это отлично.Но когда я провожу пальцем вниз или опускаю вниз, он переходит на следующую страницу.Как это ограничить?

private boolean mControlEnabled = true;

    private final GestureDetector.OnGestureListener mOnGestureListener =
                new GestureDetector.SimpleOnGestureListener() {
                    @Override
                    public boolean onSingleTapUp(final MotionEvent e) {
                        performClick();
                        return super.onSingleTapUp(e);
                    }


                    @Override
                    public boolean onFling(final MotionEvent e1, final MotionEvent e2,
                                           final float velocityX, final float velocityY) {


                        if (isControlEnabled() && (((int) velocityX) != 0) && !mFlinging) {
                            Log.i("isControlEnabled", "onFling: "+isControlEnabled());
                            mFlinging = true;
                            if (velocityX < 0) {
                                incrementToNextSegment(mTouchDownOffset);
                            }
                            else {
                                decrementToPreviousSegment(mTouchDownOffset);
                            }
                        }

                        return super.onFling(e1, e2, velocityX, velocityY);
                    }
                };

 @Override
    protected void onScrollChanged(int l, int t, int oldl, int oldt) {
        super.onScrollChanged(l, t, oldl, oldt);
        if (isOkayToSnap() && (l != oldl)) {
            if (mScrollState == ScrollState.NONE) {
                mScrollState = ScrollState.OTHER;
                resetSnap();
            }
            else {
                removeCallbacks(mScrollDetector);
            }

            postDelayed(mScrollDetector, SCROLL_DETECTION_TIMEOUT);
        }
    }
  @Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        if (isOkayToSnap()) {
            snap();
        }
    }
 private void handleFlingOnTouch(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_CANCEL:
            case MotionEvent.ACTION_OUTSIDE:
                mFlinging = false;
                break;
        }
    }
private boolean snap() {
        return snap(computeHorizontalScrollOffset());
    }
private synchronized boolean snap(int offset) {
        boolean returnValue = false;
        if (isOkayToSnap()) {
            int snapPosition = computeSnapPositionForOffset(offset);

            if (snapPosition >= 0) {
                resetSnap();
                mSmoothScroller.start(offset, snapPosition);
                returnValue = true;
            }
        }

        return returnValue;
    }
...