gpt4 book ai didi

android - onTouchEvent()中如何区分移动和点击?

转载 作者:IT老高 更新时间:2023-10-28 13:15:01 27 4
gpt4 key购买 nike

在我的应用程序中,我需要同时处理移动和点击事件。

点击是一个 ACTION_DOWN Action 、几个 ACTION_MOVE Action 和一个 ACTION_UP Action 的序列。理论上,如果您收到一个 ACTION_DOWN 事件,然后是一个 ACTION_UP 事件 - 这意味着用户刚刚单击了您的 View 。

但实际上,此序列不适用于某些设备。在我的三星 Galaxy Gio 上,只需单击我的 View 就会得到这样的序列:ACTION_DOWN,几次 ACTION_MOVE,然后是 ACTION_UP。 IE。我收到一些带有 ACTION_MOVE 操作代码的意外 OnTouchEvent 触发。我从来没有(或几乎从来没有)得到序列 ACTION_DOWN -> ACTION_UP。

我也不能使用 OnClickListener,因为它没有给出点击的位置。那么如何检测点击事件并将其与移动区别开来呢?

最佳答案

这是另一个非常简单的解决方案,不需要您担心手指被移动。如果您将点击作为简单移动距离的基础,那么您如何区分点击和长点击。

您可以在其中添加更多智能并包括移动的距离,但我还没有遇到一个实例,即用户可以在 200 毫秒内移动的距离应该构成移动而不是点击。

setOnTouchListener(new OnTouchListener() {
private static final int MAX_CLICK_DURATION = 200;
private long startClickTime;

@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
startClickTime = Calendar.getInstance().getTimeInMillis();
break;
}
case MotionEvent.ACTION_UP: {
long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;
if(clickDuration < MAX_CLICK_DURATION) {
//click event has occurred
}
}
}
return true;
}
});

关于android - onTouchEvent()中如何区分移动和点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9965695/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com