Как мне определить, щелкнул ли экран за пределами MotionEvent.ACTION_SCROLL? - PullRequest
0 голосов
/ 25 апреля 2019

Я не могу получить доступ к событию щелчка объекта на экране.поэтому я хочу отслеживать события нажатия на экране с помощью сенсорного прослушивателя.но когда он прокручивается, он также воспринимается как щелчок.как я могу преодолеть это?

 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;
        }
    });

1 Ответ

1 голос
/ 02 мая 2019

Я использовал для этого «GestureDetector.OnGestureListener».Таким образом, «upScroll» не запускается в ситуациях «downScroll».Я делаю это только тогда, когда это действительно касается экрана.

...