【问题标题】:Capturing Crosswalk Cordova webview touch events捕获 Crosswalk Cordova webview 触摸事件
【发布时间】:2015-01-30 04:17:37
【问题描述】:

我正在使用Crosswalk Cordova framework 构建一个基于网络的 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... 
}

但同样,这个方法永远不会被触发。

任何帮助或想法将不胜感激。

【问题讨论】:

    标签: android cordova webview crosswalk-runtime


    【解决方案1】:

    我设法通过覆盖Activity 类中定义的dispatchTouchEvent 方法来完成这项工作。这是捕获触摸事件并将它们委托给我的cordova webview,而无需触发我的onTouchEvent

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

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

    【讨论】:

    • 你能帮我检测滚动事件吗?
    • 感谢您的回答。仅供参考,您在 dispatchTouchEvent(ev) 之后缺少分号 :)
    猜你喜欢
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多