OnSingleTapUp事件触发两次

时间:2015-03-14 14:26:09

标签: android xamarin

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

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

奇怪的是,单击按钮时,按钮方法只调用一次。谁能告诉我可能导致这种奇怪行为的原因以及如何避免这种行为?

1 个答案:

答案 0 :(得分:1)

您需要使用onSingleTapConfirmed(MotionEvent event)代替。这样android可以确保它只需点击一次,并且不会两次触发事件。

修改:如果您决定使用onSingleTapUp(MotionEvent event),那么您可以使用event.getEventTime(),如果第一个和第二个事件之间的时差小于THRESHOLD, 200毫秒或者其他什么,认为这是不必要的第二次点击并忽略它。

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

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

希望它有所帮助,祝你好运!