【问题标题】:Android OnTouchEvent: Debugging InputEventConsistencyVerifier messagesAndroid OnTouchEvent:调试 InputEventConsistencyVerifier 消息
【发布时间】:2013-04-19 03:05:02
【问题描述】:

我有一个为OnTouchEvent() 配置了手势监听器的布局。布局包含一个列表视图,我正在使用手势来捕获列表视图的行 ID。 我有以下代码-

 itemsList.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View arg0, MotionEvent evt) {
            // TODO Auto-generated method stub
            //
            int action = evt.getAction();
            final String DEBUG_TAG = "DEBUG";
            detector.onTouchEvent(evt);
            switch(action) {
                case (MotionEvent.ACTION_DOWN) :
                    Log.d(DEBUG_TAG,"Action was DOWN");
                    return true;
                case (MotionEvent.ACTION_MOVE) :
                    Log.d(DEBUG_TAG,"Action was MOVE");
                    return true;
                case (MotionEvent.ACTION_UP) :
                    Log.d(DEBUG_TAG,"Action was UP");
                    return true;
                case (MotionEvent.ACTION_CANCEL) :
                    Log.d(DEBUG_TAG,"Action was CANCEL");
                    return true;
                case (MotionEvent.ACTION_OUTSIDE) :
                    Log.d(DEBUG_TAG,"Movement occurred outside bounds " +
                            "of current screen element");
                    return true;    
            } 

            return false;
        }

    });

detector 是 GestureDetector 实例。我基本上只是在列表视图的一行上使用向左滑动或向右滑动动作。

每当我向左/向右滑动时,我都会在 Logcat 中收到 3 条调试消息 (信息或要查看的东西??)。

D/InputEventConsistencyVerifier(24700): TouchEvent: ACTION_MOVE contained 1 pointers 
but there are currently 0 pointers down.

D/InputEventConsistencyVerifier(24700):   in android.view.GestureDetector@b50cf9b0

D/InputEventConsistencyVerifier(23596):   0: sent at 37751425150760, 
MotionEvent { action=ACTION_MOVE, id[0]=0, x[0]=39.00721, y[0]=28.526703, toolType[0]=TOOL_TYPE_FINGER, 
buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=37751425, 
downTime=37751133, deviceId=0, source=0x1002 }

还有来自 OnTouchListener 的 4 条调试消息 -

Action was ACTION MOVE
Action was ACTION MOVE
Action was ACTION MOVE
Action was ACTION UP

这与我认为的滑动动作相对应。

主要活动类扩展了OnGestureListener,因此具有未实现的方法,例如onFling..等。

问题在于 onFling 方法仅在 ACTION UP 事件之后调用,并且当发生这种情况时,传递给方法 mevt1 的参数为空,而 mevt2 不为空。 (默认行为?)

onFling(MotionEvent mevt1, MotionEvent mevt2, float velX, float velY)

该方法使用 mevt1,因此会导致 nullpointexception。

我想知道来自InputEventConsistencyVerifier 的调试消息是否有任何问题,是否有人知道这是否有任何问题?

【问题讨论】:

    标签: android listview touch-event gestures


    【解决方案1】:

    你必须打电话

    detector.onTouchEvent(evt)
    

    对于每个动作,而不仅仅是 ACTION_MOVE

    【讨论】:

    • 抱歉,我之前粘贴的代码来自我的调试会话。更新了新代码。运行此代码时,我的应用程序崩溃。我发现如果我也使用 onScroll() ,结果是一样的。即应用程序崩溃。
    • 为什么你总是返回true?返回检测器的值
    • 我不知道如何,但我从头开始编写了一些触摸事件代码,我不再收到错误,一切正常。我认为该错误可能是由于父视图或子视图(Listview 上下文)中的触摸事件处理不当造成的。
    • 返回 'true' 是因为我不再希望触摸事件转到子视图。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    相关资源
    最近更新 更多