У меня есть 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;
}