Android – 将GestureDetector添加到webview

前端之家收集整理的这篇文章主要介绍了Android – 将GestureDetector添加到webview前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想将GestureDetector类添加到我的webview中,以便我可以管理常见的手势,例如doubletap.

这是我试图完成的事情:

> SingleTap将正常运行
> DoubleTap将打开物品(下面有更多内容)

关于DoubleTap – 有问题的网站有源代码,用于定义如何处理某些项目的单击和双击.它声明单击一次选择一个项目,双击打开该项目.我必须对这些项目含糊不清,因为它不是公共网站.

我不需要配置flings或swipes.我只想重新创建PC鼠标单击和双击.

编辑:我在Pat的下面的建议中添加了.我根据自己的喜好改变了一些东西,并从其他来源添加了一些东西.

我使用this question来帮助构建我的活动以及Pat的帮助.使用“First Way”代码,它正确加载我的应用程序并成功重新加载页面.现在,我只需要添加其他事件处理程序并正确配置它们.当我开始工作时会发布最终代码,我会将Pat的答案标记为正确.

用户在没有回答的情况下询问相同的问题:How to make double clicks work.

它说这是折旧的GestureDetector(新的MyGestureDetector()); – 我应该解决这个问题吗?

编辑2:由于问的实际问题是如何将webdetecor添加到webview,我能够做到这一点,我会将Pat的答案标记为正确.即使我确实想要doubleTap =双击,我也没有在我的标题中问这个,所以我会为此创建一个新问题.

import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.SslErrorHandler;
import android.net.http.SslError;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;

public class MainActivity extends Activity{
    WebView webview;    

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webview = (WebView) findViewById(R.id.webview);   
        //Do we want/need to enable Java?
        webview.getSettings().setJavaScriptEnabled(true); 
        //Here we allow for zoom controls - pinch
        webview.getSettings().setBuiltInZoomControls(true);
        //Here we remove the zoom control buttons - requires API 11
        webview.getSettings().setDisplayZoomControls(false);
        //Here we clear the Cache and SSL Preferences       
        webview.clearCache(true);
        webview.cleaRSSlPreferences();
        //Do we need to enable scroll bars to allow people to scroll left and right?        
        webview.setHorizontalScrollBarEnabled(true);
        webview.setVerticalScrollBarEnabled(true);
        webview.setWebViewClient(new WebViewClient());
        webview.loadUrl("website");

        final GestureDetector gd = new GestureDetector(new MyGestureDetector());
        View.OnTouchListener gl = new View.OnTouchListener() {
            public boolean onTouch(View v,MotionEvent event) {
                return gd.onTouchEvent(event);
            }
        };
        webview.setOnTouchListener(gl);
    }

class MyGestureDetector extends SimpleOnGestureListener {    
    @Override
    public boolean onDoubleTapEvent(MotionEvent e) {
        Log.i("","DoubleTapEvent");
        return true;
        }   

    }    


// Ignore SSL certificate errors    
    public void onReceivedSslError(WebView view,SslErrorHandler handler,SslError error) {
        handler.proceed();
    }

//Would like to have a Menu Button to refresh the page - or really just bring you to the login page - for use when the session times out    
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(1,1,"Refresh");
    //removed below to have only buttons show
    //getMenuInflater().inflate(R.menu.activity_main,menu);
    return true;
    }

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()){
    case R.id.refresh:
        webview.loadUrl("website");
        return true;
    }
    return super.onOptionsItemSelected(item);

}

}

〜丹

最佳答案
您是否在询问如何设置侦听器来处理单/双击?子类GestureDetector.SimpleOnGestureListener并将其设置为您的触摸侦听器:

public class GestureListener extends GestureDetector.SimpleOnGestureListener {

然后覆盖单个tap和onDoubleTap上的onSingleTapConfirmed方法.然后在webview上设置触摸监听器,onTouch只需调用GestureListener的onTouchEvent.

编辑:

 final GestureDetector gestureDetector = new GestureDetector(context,new GestureListener());

                webview.setOnTouchListener(new OnTouchListener() {

                    @Override
                    public boolean onTouch(View v,MotionEvent event) {
                        return gestureDetector.onTouchEvent(event);
                    }
                });

猜你在找的Android相关文章