2012-05-02 2 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 е) будет делать все, что находится между в случае двойного щелчка. 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?

Смежные вопросы