【问题标题】:How do I determine if a screen is clicked outside of MotionEvent.ACTION_SCROLL?如何确定是否在 MotionEvent.ACTION_SCROLL 之外单击了屏幕?
【发布时间】:2019-04-25 07:13:44
【问题描述】:

我无法访问屏幕上某个对象的点击事件。所以我想用触摸监听器捕捉屏幕上的点击事件。但是当它滚动时,它也被认为是点击。我该如何克服呢?

 mMessagesList.setOnTouchListener(new View.OnTouchListener() {
        private static final int MAX_CLICK_DURATION = 200;
        private long startClickTime;

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN: {
                    startClickTime = Calendar.getInstance().getTimeInMillis();
                    break;
                }
                case MotionEvent.ACTION_UP: {
                    long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;
                    if (clickDuration < MAX_CLICK_DURATION) {
                        //click event has occurred
                        myAction();
                    }
                    break;
                }
                case MotionEvent.ACTION_MOVE:
                    return false;
                case MotionEvent.ACTION_SCROLL:

                    return false;
                case MotionEvent.AXIS_SCROLL:
                    return false;
                case MotionEvent.ACTION_BUTTON_PRESS:
                    return true;
            }
            return false;
        }
    });

【问题讨论】:

    标签: android android-layout onclicklistener touch-event


    【解决方案1】:

    我为此使用了“GestureDetector.OnGestureListener”。因此,在“downScroll”情况下不会触发“upScroll”。我只在它真正接触到屏幕时才这样做。

    【讨论】:

      猜你喜欢
      • 2011-06-08
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-24
      相关资源
      最近更新 更多