捕获Crosswalk Cordova webview触摸事件

4
我正在使用Crosswalk Cordova framework构建一个基于Web的Android应用程序,并尝试在应用程序的主活动中捕获发生在XWalk Webview上的任何触摸事件,但到目前为止,我尝试过的所有方法都无法在调试会话期间触发触摸事件。
具体来说,我正在尝试在Web视图上的任何位置捕获三指向下滑动,以便显示设置窗格。
以下是我在主要活动中已经拥有的内容:
public class MyActivity extends CordovaActivity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        super.init();
        super.loadUrl(Config.getStartUrl());

        // appView is the main xwalk webview setup in parent
        appView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getAction();
                // Check for three finger swipe... 
            }
        });
    }

    ....
}

我意识到我可以通过JavaScript事件捕获触摸事件,然后通过cordova api调用触发操作,但我更愿意将这个逻辑放在Android应用程序中。我还尝试在onTouchEvent方法中捕获触摸事件。
public boolean onTouchEvent(View view, MotionEvent event) {
    int action = event.getAction();
    // Check for three finger swipe... 
}

但是,这种方法从未被触发。

非常感谢任何帮助或想法。

1个回答

4

我通过重写Activity类中定义的dispatchTouchEvent方法来使其正常工作。这样,它就会捕获触摸事件并将它们委托给我的cordova webview,而不会触发我的onTouchEvent

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    int action = ev.getAction();
    // handle three finger swipe

    super.dispatchTouchEvent(ev);
}

我希望这可以帮助到面临此问题的人 :)

你能帮我检测滚动事件吗? - Ranjithkumar
谢谢你的回答。只是提醒一下,dispatchTouchEvent(ev)后面缺少分号 :) - HarshaXsoad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接