3

我正在尝试使用 HTML5 画布和触摸在 Android 中制作 WebView 应用程序。

这是我认为我的代码的相关部分:

在 onCreate :

WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
    ...
    myWebView.loadData(content,"text/html", "UTF-8"); 

其中字符串“内容”包含一个 html / javascript 块,其中包含以下几行。

  this.canvas = document.getElementById(AN_ID); // AN_ID is id of a canvas tag
  ...
  this.canvas.addEventListener("touchstart", function(e) {
    ...
  }, false);

  this.canvas.addEventListener("touchend", function(e) {
    ...
  }, false);

并且 activity_main.xml 文件包含标签

<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/>

但是我的测试设备 Nexus 7 似乎没有响应触摸事件。如果我用“mousedown”和“mouseup”替换“touchstart”和“touchend”,看起来mousedown事件被识别了。但是 mouseup 的行为不正常(即,就像在浏览器中运行的相同代码一样)。

我显然错过了什么,例如。我需要在 javascript 中启用触摸事件的配置设置?

4

1 回答 1

1

好的。我解决了。

我仍在尝试获取 Page.X 和 Page.Y 值,而不是从 event.targetTouches 中获取。而且我假设在 touchend 中可以使用坐标,而实际上它们不是。您必须在 touchmove 期间跟踪它们。

于 2013-02-14T01:52:17.380 回答