Android Touch事件确定持续时间

And*_*der 8 android touch

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

小智 23

long eventDuration = event.getEventTime() - event.getDownTime();
Run Code Online (Sandbox Code Playgroud)


Wro*_*lai 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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在你只需要检查,如果mBooleanIsPressedtruecheckGlobalVariable()函数.

我来到了,当我在写这一个想法是使用简单的时间戳(例如System.currentTimeMillis()),以确定之间的持续时间MotionEvent.ACTION_DOWNMotionEvent.ACTION_UP.


Seb*_*ich 8

在这种情况下,您不能使用unix时间戳.Android提供自己的时间测量.

long eventDuration = 
            android.os.SystemClock.elapsedRealtime() 
            - event.getDownTime();
Run Code Online (Sandbox Code Playgroud)