android - Hammer.js 水龙头在 Android 上很慢?

标签 android cordova hammer.js

情况:Cordova 跨平台移动应用程序上的 hammer.js 2.0.4、jQuery 2.1。我遇到了有据可查的( for example )点击事件延迟问题,所以我想我会为此尝试 hammer.js。它在我的 iPad 上运行得非常好,但在我的 Android 手机 (Android v4.4) 上却很糟糕:响应速度非常慢,并且经常完全错过点击。

我实现了自己的轻敲检测(使用 mouseUp 事件),它在我的 Android 上比 Hammer.js 表现得更好(但在我的 iPad 上表现得非常糟糕)。

所以我的问题是:Android 上的 hammer.js 是否存在已知问题,或者已知的解决方法?我真的不希望有条件地使用基于平台的两种不同方法,尤其是当存在我没有想出的方法来测试所有可能的移动平台。

hammer.js tap代码示例;没有什么非常有趣的事情发生:

    $(".menuitem").each( function(i, elem) {
      var mc = new Hammer.Manager(elem);
      mc.add(new Hammer.Tap());
      mc.on("tap", action);
    });

此外,还有一个覆盖整个页面的顶级滑动识别器:

    var swipelistener = new Hammer($("body")[0], {
        recognizers: [[Hammer.Swipe,{ direction: Hammer.DIRECTION_RIGHT }]]
    });
    swipelistener.on("swipe", swipeRight );

响应点击事件的元素总共不到两打,并且没有重叠或嵌套的元素。我认为这可能与滑动识别器重叠点击识别器有关,但移除滑动监听器根本不会改变点击行为。

最佳答案

您需要使用每个识别器的设置。

hammertime.get('swipe').set({
    direction: hammer.DIRECTION_ALL, threshold: 1, velocity: 0.1
});

这对我在 4.1.1 上滑动很有效 如果有人可以为 tap 编写一些示例代码,那将非常有帮助,因为我仍在摆弄它。

此外,您不需要 mc.add,因为默认情况下管理器具有所有识别器。手动删除(使用 mc.remove)一个后,您只需使用 .add。

如果您不确定任何识别器的设置,请查看他们的网站,例如 http://hammerjs.github.io/recognizer-swipe/表明我可以按照上面的代码设置方向、阈值和速度等。

关于android - Hammer.js 水龙头在 Android 上很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33360602/

相关文章:

android - Uber 应用程序如何定义设备的最大注册数限制?

android - Cordova:无法添加 Android 平台,出现 EACCES 错误

javascript - 如果不添加附件,PouchDB 代码将无法工作

javascript - 无法使 jquery.transit 正常工作

android - 处理程序不会绑定(bind)到主线程

android - 我希望能够将数据从 kinect 发送到 android 应用程序

Cordova 插件媒体捕获错误 20

jquery - 如何使用hammer.js实现两指点击

javascript - 在 Hammer.js 中点击后立即检测平移,将其称为双击平移

android - 选项卡主机中的 Activity 变为空白