在Android应用程序的ViewGroup的“ onInterceptTouchEvent”方法中,ACTION_MOVE事件能否在ACTION_DOWN事件之前到达?

时间:2018-10-23 06:47:39

标签: android

我要为手势的第一个事件初始化对象“ obj”。

如果ACTION_DOWN总是在ACTION_MOVE之前到达,我可以通过检查当前事件是否为ACTION_DOWN来初始化对象。

同时,如果有可能在ACTION_DOWN之前达到ACTION_MOVE,则我需要同步锁上对象的初始化。

示例代码(通过同步)如下:

public boolean onInterceptTouchEvent(MotionEvent e) {

    if (object == null) {
        synchronized (lock) {
            if (object == null) {
                object = new MyClass();
            }
        }
    }

    return super.onInterceptTouchEvent(e);
}

1 个答案:

答案 0 :(得分:1)

将手指放在屏幕上后立即调用

ACTION_DOWN。 当您将手指放在屏幕上开始移动时,将调用ACTION_MOVE。 因此从技术上讲,ACTION_MOVE之前是ACTION_DOWN