2012-05-02 47 views
1

我有一個網站,它具有雙擊功能,因此在雙擊瀏覽器時,它只會縮放。所以我構建了一個WebView,這樣我就可以完成雙擊並使其反應。在WebView中進行雙擊工作

public class myWebView extends Activity{ 

GestureDetector gs = null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    WebView engine = (WebView) findViewById(R.id.web_engine); 
    engine.getSettings().setJavaScriptEnabled(true); 
    engine.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
    engine.getSettings().setSupportMultipleWindows(true); 
    engine.setWebChromeClient(new WebChromeClient() { 
     @Override 
     public boolean onJsAlert(WebView view, String url, String message, JsResult result) { 
        return super.onJsAlert(view, url, message, result); 
      } 
    }); 
    engine.setWebViewClient(new WebViewClient() { 
       @Override 
       public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        view.loadUrl(url); 
        return true; 
       } 
      }); 

    engine.setOnTouchListener(new View.OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      if (gs == null) { 
       gs = new GestureDetector(
         new GestureDetector.SimpleOnGestureListener() { 
          //overrides the double click 
          @Override 
          public boolean onDoubleTapEvent(MotionEvent e) { 
           // SOME CODE THAT SIMULATES A DOUBLE CLICK 
           return true; 
          } 
         }); 
      } 
      gs.onTouchEvent(event); 
      return false; 
     } 
    }); 
    engine.loadUrl("http://www.google.com"); 
} 
} 

所以函數onDoubleTapEvent(MotionEvent e)將在雙擊事件中執行任何操作。 The above code is mostly thanks too Cehm

所以在這一點上,我需要欺騙它執行一個雙擊。我可以在那裏模擬一些點擊嗎?

+0

它是一個非常糟糕的主意忽視了平臺的UI公約。雙擊手勢放大是衆所周知的,並且由用戶使用,如果您開始使用它來做不同的事情,您只會讓用戶生氣。 – slayton

+0

嗯,我只是爲大型公司用於其員工的特定網站而做的,並且需要雙擊功能。我不想替換android的網絡瀏覽器。我只是爲了一個非常特定的目的而製作一個小應用程序。 – user1366422

回答

2

嘗試了一次:

private GestureDetector gs = null; 

private OnTouchListener onTouch = new OnTouchListener() { 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 

     if (gs == null) { 
      gs = new GestureDetector(
        new GestureDetector.SimpleOnGestureListener() { 
         @Override 
         public boolean onDoubleTapEvent(MotionEvent e) { 

          //Double Tap 
          snapWebView.zoomIn();//Zoom in 
          return true; 
         } 

         @Override 
         public boolean onSingleTapConfirmed(MotionEvent e) { 

          //Single Tab 
          snapWebView.zoomOut();// Zoom out 
          return false; 
         }; 
        }); 
     } 

     gs.onTouchEvent(event); 

     return false; 
    } 
}; 

最後,設置OnTouch事件的WebView:

webView.setOnTouchListener(onTouch); 

見細節:How to make Double Click in WebView?