如何检测Android 2.1触摸事件的持续时间?如果该区域被按压了5秒钟,我想要做出响应。
long eventDuration = event.getEventTime() - event.getDownTime();
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);
}
}
}
现在你只需要在checkGlobalVariable()
函数中检查mBooleanIsPressed
是否为true
。
我想到的一个方法是使用简单的时间戳(例如System.currentTimeMillis()
)来确定MotionEvent.ACTION_DOWN
和MotionEvent.ACTION_UP
之间的持续时间。
long eventDuration =
android.os.SystemClock.elapsedRealtime()
- event.getDownTime();