我在我的应用程序中实现了多个触摸按钮,通过definyng并将我的OnTouchListener(和onTouch方法)版本附加到我的所有按钮上。 一切都完美无缺,除了一件似乎属于听众标准行为的事情。我希望能够在不发布代码的情况下解释它,因为它很长。
如果我单击并按住某个按钮,将按预期调用onTouch方法,并单击应用程序看到的按钮。 如果我单击并按住第二个,则按预期调用onTouch方法(与第一个按钮相关),并单击应用程序看到按钮。
如果我只释放第二个按钮,如果第一个按钮上的手指保持绝对静止,则不会调用onTouch事件,也不会逻辑释放第二个按钮。只有当我至少移动一个像素的第一个手指时才会调用onTouch方法,并且只有在第二个按钮被释放的那一刻才会被调用。
我知道很难将手指准确地保持在同一位置超过一毫秒:-),但有时它会发生..我不得不花一些时间来理解这种行为的原因,并且我没有找到解决方案,你有任何建议解决这个问题吗? 非常感谢你。
答案 0 :(得分: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;
这有助于我避免推送不准确。