在onTouchListener中检测onLongPress和onClick事件

问题描述 投票:0回答:1

我有一个onTouchListener(),需要确定用户单击还是长按。因此,我可以确定是单击还是长按,但是问题是我只能在Motion.ACTION_UP中确定它。

mViewBinder.actionMain.setOnTouchListener(new View.OnTouchListener() {
        private long lastTouchDown;
        private int CLICK_ACTION_THRESHOLD = 200;

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    lastTouchDown = System.currentTimeMillis();
                    break;
                case MotionEvent.ACTION_UP:
                    if(System.currentTimeMillis() - lastTouchDown < CLICK_ACTION_THRESHOLD) 
                        Logger.log("OnCLickEvent", "onClickListener");
                    else 
                        Logger.log("OnCLickEvent", "onLongClickListener");

                    break;
            }
            return true;
        }
    });

我想我需要在ACTION_DOWN中以某种方式确定是否是长按,在ACTION_UP中确定是单击。我的目的是在1)用户长按按钮而没有拔出手指2)用户点击了按钮

我想你明白。因此,我使用OnTouchListener(),因为在我的构造函数中需要MotionEvent event以便将来使用。谢谢。

java android ontouchlistener motionevent
1个回答
0
投票

取决于您的用例。如果有原因,您不能只使用setOnLongClickListener(),我建议改用GestureDetector。

https://developer.android.com/training/gestures/detector

© www.soinside.com 2019 - 2024. All rights reserved.