2

我在我的应用程序中实现了多点触控按钮,方法是定义我的 OnTouchListener 版本(和 onTouch 方法)并将其附加到我的所有按钮上。一切都完美无缺,除了一件似乎属于听众标准行为的事情。我希望能够在不发布代码的情况下解释它,因为它很长。

如果我单击并按住一个按钮,则会按预期调用 onTouch 方法,并且应用程序会看到单击了按钮。如果我单击并按住第二个按钮,则会按预期调用 onTouch 方法(与第一个按钮相关),并且应用程序会看到按钮被单击。

如果我只释放第二个按钮,如果我在第一个按钮上的手指保持绝对不动,则不会调用 onTouch 事件,并且不会在逻辑上释放第二个按钮。仅当我移动至少一个像素的食指时才会调用 onTouch 方法,并且只有在那一刻第二个按钮才会被释放。

我知道将手指完全保持在同一位置超过一毫秒是非常困难的:-),但有时它会发生..我不得不花一些时间来了解这种行为的原因,但我没有找不到解决方案,您有解决此问题的建议吗?非常感谢。

4

1 回答 1

0

在你的 onTouch 里面试试这个

PointF curr = new PointF(event.getX(), event.getY());
switch (event.getAction()) {
    case MotionEvent.ACTION_UP:
        float xDiff = Math.abs(curr.x-start.x);
        float yDiff = Math.abs(curr.y-start.y);
        if (xDiff < 5f && yDiff < 5f) {
        //insert here your code when button is click
        }
     break;

这有助于我避免推送不准确。

于 2012-06-02T20:48:07.717 回答