Android Touch事件确定持续时间

时间:2011-03-11 21:29:34

标签: android touch

如何检测Android 2.1触摸事件的持续时间?我想回答的只是该地区被压了5秒钟?

3 个答案:

答案 0 :(得分:22)

long eventDuration = event.getEventTime() - event.getDownTime();

答案 1 :(得分:14)

您可以尝试混合使用MotionEventRunnable / 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函数中的truecheckGlobalVariable()

我写这篇文章时提出的一个想法是使用简单的时间戳(例如System.currentTimeMillis())来确定MotionEvent.ACTION_DOWNMotionEvent.ACTION_UP之间的持续时间。

答案 2 :(得分:8)

在这种情况下,您无法使用unix时间戳。 Android提供自己的时间测量。

long eventDuration = 
            android.os.SystemClock.elapsedRealtime() 
            - event.getDownTime();