【问题标题】:Android: OnTouchListener.OnTouch not called in multiTouchAndroid:在 multiTouch 中未调用 OnTouchListener.OnTouch
【发布时间】:2012-06-07 11:11:28
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android multi-touch ontouchlistener


    【解决方案1】:

    在你的 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;
    

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

    【讨论】:

    • 你好,谢谢你,但我的问题是 onTouch 没有被调用 :-) 也许我必须为每个按钮创建一个相同类的不同监听器
    猜你喜欢
    • 2011-01-06
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多