android - OnSingleTapUp 事件触发两次

标签 android xamarin

我有一个带有 GestureDetector 的 Xamarin Android 应用程序。在我的设备 (Sony Xperia S5303) 和模拟器中它运行良好。然而,在三星 Galaxy 平板电脑上,OnSingleTapUp 事件被触发了两次,即使我只触摸了一次屏幕。由于事件由 OnSingleTapConfirmed 检查,并且设备的行为就像进行了两次点击一样,因此永远不会调用以下方法:

public bool OnSingleTapUp(MotionEvent e)
{
    if (PersistentContext.LoggedPlayer.Token)
    {
        if (simpleOnGestureListener.OnSingleTapConfirmed(e))
        {
             Move(e);
        }
        return true;
     }
     return false;
}

奇怪的是,当点击一个按钮时,按钮方法只被调用一次。谁能告诉我什么可能导致这种奇怪的行为以及如何避免它?

最佳答案

您需要改用 onSingleTapConfirmed(MotionEvent event)。这样 android 就可以确保它是单击一次,并且不会触发事件两次。

编辑:如果您决定使用onSingleTapUp(MotionEvent event),那么您可以使用event.getEventTime(),如果第一次和第二次事件之间的时间差小于 200 毫秒之类的阈值,将其视为不需要的第二次触发点击并忽略它。

编辑 2: 因为我不使用 Xamarin,所以我可能完全错了,但我认为你需要像这样更改你的代码:(我的意思是完全忘记 onSingleTapUp 并将你的整个代码移动到 onSingleTapConfirmed )

@Override
public boolean onSingleTapConfirmed(MotionEvent event) {
        if (PersistentContext.LoggedPlayer.Token)
        {
                Move(e);
            return true;
        }
        return false;
}

希望对您有所帮助,祝您好运!

关于android - OnSingleTapUp 事件触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29050015/

相关文章:

android - 无法在 xamarin android 中创建 wcf 服务对象/客户端以供引用

java - LibGDX 第一次加载 scene2D 小部件非常慢,需要建议

android - 以编程方式创建 LinearLayout 后居中元素

java - 以编程方式从多个文件添加布局

Xamarin WKWebView 接受自签名证书

c# - 安装 Xamarin IOS.Setup 和 Android.Setup 时 "' 1.0.0 ' is not a valid short file name"

php - 如何从 php 到 Android 通信

java - 我想将数据 Activity 发送到 fragment ,但从未调用过 InterFace 方法

android - 在MonoDroid中设置textview的文本时,“jobject”不得为IntPtr.Zero

c# - Xamarin android c# 在 3 秒后调用或显示事件