Как мне подсчитать, сколько раз я касался экрана с помощью OnTouchListener?

#android #ontouchlistener #wearables

#Android #ontouchlistener #носимые устройства

Вопрос:

Я использую носимое устройство и создаю для него приложение. У меня есть таймер и некоторые другие вещи, которые начинаются, когда я нажимаю кнопку «Пуск». Дело в том, что кнопка «Пуск» занимает некоторое пространство, из-за чего все выглядит переполненным. Я использовал носимый ящик действий, но он выглядит не очень хорошо, поэтому я прибегнул к использованию onTouchlistner с представлением, в котором размещены мои объекты, такие как таймеры.

Макет представляет собой FrameLayout. Теперь, когда я использую onTouchListner, событие движения, которое я обнаруживаю, — это ACTION_DOWN как мне подсчитать, что это происходит 2 раза, чтобы запустить то, что я хочу запустить, и когда это 4 раза, я вызываю свой AlertDialog?

 frameLayout = (FrameLayout)findViewById(R.id.myscreen);
    frameLayout.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int x = (int) event.getX();
            int y = (int) event.getY();
            clicked = clicked   1;
            if(event.getAction() == MotionEvent.ACTION_DOWN)
            {
                startTimer();
                //Check flow rate
                if(num == 450)
                {
                    try {
                        flow.setText(String.valueOf(num));
                        progressBar.setIndeterminateDrawable(Circle);
                        progressBar.setVisibility(View.VISIBLE);
                    } catch (NullPointerException e) {
                        e.printStackTrace();
                    }
                }
                else if(num == 150)
                {
                    try {
                        flow.setText(String.valueOf(num));
                        progressBar.setIndeterminateDrawable(Circle);
                        progressBar.setVisibility(View.VISIBLE);
                    } catch (NullPointerException e) {
                        e.printStackTrace();
                    }

                }

            }
            else if(event.getAction() == MotionEvent.ACTION_DOWN amp;amp; clicked == 4)
            {

                Handler mHandler = new Handler(Looper.getMainLooper());
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        // Your UI updates here
                        AlertMessage();
                    }
                });

            }

            return true;
        }
    });
 

clicked — это целое число, инициализированное нулем. Я использовал это, когда использовал кнопки для подсчета количества кликов. Теперь я хочу подсчитать количество нажатий на мой экран, поэтому, если 2 нажатия —-> запустить, если 4 нажатия ——> вызвать AlertDialog

Ответ №1:

Переместите логику увеличения счетчика вместе с логикой проверки счетчика внутри if(event.getAction() == MotionEvent.ACTION_DOWN) предложения if.

 frameLayout = (FrameLayout)findViewById(R.id.myscreen);
    frameLayout.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int x = (int) event.getX();
            int y = (int) event.getY();
            if(event.getAction() == MotionEvent.ACTION_DOWN)
            {
                if(clicked == 4)
                {
                    Handler mHandler = new Handler(Looper.getMainLooper());
                    mHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            // Your UI updates here
                            AlertMessage();
                        }
                    });
                    return true;
                }
                clicked = clicked   1;
                startTimer();
                ....
            }    
            return true;
        }
    });
 

Комментарии:

1. Я внес небольшое изменение, но почти такое же, как и вы. Ценный друг.