如何检测Android 2.1触摸事件的持续时间?我想回答的只是该地区被压了5秒钟?
答案 0 :(得分:22)
long eventDuration = event.getEventTime() - event.getDownTime();
答案 1 :(得分:14)
您可以尝试混合使用MotionEvent
和Runnable
/ Handler
来实现这一目标。
示例代码:
private final Handler handler = new Handler();
private final Runnable runnable = new Runnable() {
public void run() {
checkGlobalVariable();
}
};
// Other init stuff etc...
@Override
public void onTouchEvent(MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
// Execute your Runnable after 5000 milliseconds = 5 seconds.
handler.postDelayed(runnable, 5000);
mBooleanIsPressed = true;
}
if(event.getAction() == MotionEvent.ACTION_UP) {
if(mBooleanIsPressed) {
mBooleanIsPressed = false;
handler.removeCallbacks(runnable);
}
}
}
现在,您只需要检查mBooleanIsPressed
函数中的true
是checkGlobalVariable()
。
我写这篇文章时提出的一个想法是使用简单的时间戳(例如System.currentTimeMillis()
)来确定MotionEvent.ACTION_DOWN
和MotionEvent.ACTION_UP
之间的持续时间。
答案 2 :(得分:8)
在这种情况下,您无法使用unix时间戳。 Android提供自己的时间测量。
long eventDuration =
android.os.SystemClock.elapsedRealtime()
- event.getDownTime();