如何检测时MotionEvent.ACTION_MOVE完成(how to detect when

2019-09-18 18:04发布

我需要在我的应用程序,以检测当用户停止跨特定视图移动。 我创建我的应用程序类似于劳斯莱斯文字的东西,而用户触摸视图,并通过它的移动,可以进行交互。 而且我要开始滚动查看用户抬起手指后。 正如我声明,如果我将我的手指在视图中的几秒钟,当我举起我的手指MotionEvent.ACTION_UP不叫。 这是我拍摄的最后一个事件是ACTION_MOVE 。 所以,我怎么可以检测用户何时跨越视图动了几秒钟后抬起手指? 是否有某种功能,可以检测到?

下面是我使用的代码:

txt.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, final MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                Log.e("","event down : "+event.getAction());
                handler.removeCallbacks(runnable);
                break;
            case MotionEvent.ACTION_UP:
                Log.e("","event up : "+event.getAction());
                if(myTimer!=null){
                    myTimer.cancel();
                }
                break;
            case MotionEvent.ACTION_MOVE:
                Log.d("","move");
                // handler.removeCallbacks(runnable);
                checkX();
                break;
        }
        return true;
    }
});

提前致谢!

Answer 1:

我认为该事件可能被发送ACTION_CANCEL手势完成之前采取行动。 或者,如果拖曳您检查的观点之外,也可能是ACTION_OUTSIDE

确认/调试的最佳方式,这将是把一个Log.d()在声明中,打印MotionEvent.getActionMasked()值,并查看您的后正在叫什么行动ACTION_MOVE事件结束。



文章来源: how to detect when MotionEvent.ACTION_MOVE is finished