Extend your WebView and use the GegstureDetector to detect double clicks.
public class DummyWebView extends WebView { private boolean doubleTapped; private GestureDetector.OnGestureListener gestureListener; private GestureDetector.OnDoubleTapListener doubleTapListener; private GestureDetector gestureDetector; public DummyWebView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); getSettings().setUseWideViewPort(true); getSettings().setBuiltInZoomControls(true); // Gesture Listener gestureListener = new GestureDetector.OnGestureListener() { @Override public boolean onSingleTapUp(MotionEvent e) { // Nothing to do return false; } @Override public void onShowPress(MotionEvent e) { // Nothing to do } @Override public boolean onScroll( MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // Nothing to do return false; } @Override public void onLongPress(MotionEvent e) { // Nothing to do } @Override public boolean onFling( MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // Nothing to do return false; } @Override public boolean onDown(MotionEvent e) { // Nothing to do return false; } }; // Double tap listener doubleTapListener = new GestureDetector.OnDoubleTapListener() { @Override public boolean onSingleTapConfirmed(MotionEvent e) { // Nothing to do return false; } @Override public boolean onDoubleTapEvent(MotionEvent e) { // Double tap detected, we need to prevent doubleTapped = true; return false; } @Override public boolean onDoubleTap(MotionEvent e) { return false; } }; // Gesture detection on itself gestureDetector = new GestureDetector(getContext(), gestureListener_); gestureDetector.setOnDoubleTapListener(doubleTapListener); } @Override public boolean onTouchEvent(MotionEvent event) { if(gestureDetector.onTouchEvent(event)) return true; // Double tapping might perform zooming in/out // We need to prevent it if(doubleTapped) { doubleTapped = false; return doubleTapped; } return super.onTouchEvent(event); } }
user948620
source share