Событие движения.Сбой Action_UP

#android

#Android

Вопрос:

Я пишу простой код на ontouchevent .. код

 class MyTouchListener implements View.OnTouchListener{

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub

            if(event.getAction()==MotionEvent.ACTION_DOWN)
            {    Log.i(TAG, "^^^^^^^^^^^ACTION DOWN^^^^^^^^^^^^");
            }

            else if(event.getAction()==MotionEvent.ACTION_UP)
            {
                 Log.i(TAG, "^^^^^^^^^^^ACTION UP^^^^^^^^^^^^");
            }
}
  

пока я нажимал на экран, он печатает ^^^^^ ДЕЙСТВИЕ ВНИЗ ^^^^^
Но когда я выпустил экран, он не печатает ^^^^^^ ДЕЙСТВИЕ ВВЕРХ ^^^^^^….

означает событие движения.Сбой ACTION_UP..почему это так??

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

1. Какое значение вы возвращаете из метода onTouch ()? Если вы возвращаете false — означает, что прослушиватель больше не будет получать никаких событий, поэтому вы должны вернуть true .

Ответ №1:

Попробуйте использовать MotionEvent.ACTION_CANCEL

  @Override
    public boolean onTouch(final View view, final MotionEvent motionEvent) {

        if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                setColorFilter(Color.argb(155, 185, 185, 185));
        }
        else if (motionEvent.getAction() == MotionEvent.ACTION_UP || motionEvent.getAction() == MotionEvent.ACTION_CANCEL) {
                setColorFilter(Color.argb(0, 185, 185, 185));

        }
        return false;
    }
  

или добавьте журнал в свой метод ontouch
Log.d («tag», «MotionEvent=» MotionEvent);

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

1. Сработало для меня, спасибо. Если вы удерживали нажатой кнопку, а затем включился поворот экрана, вы получили бы отмену.

Ответ №2:

ну, ACTION_DOWN происходит только один раз после того, как это действие должно произойти, и в и действие вверх…

но есть одна проблема, например, если у вас есть осязаемая область размером 48 точек x 48 точек, и если вы касаетесь этой области и отводите палец (при перетаскивании) Я имею в виду, что вы нажимаете и отводите палец от сенсорной области, чем действие вверх не произойдет!!!

Действие вверх произойдет только в том случае, если вы сделаете снимок экрана, но вы все еще находитесь в области касания. Я надеюсь, вы понимаете меня, что я пытаюсь сказать.

если вы хотите, чтобы при наведении курсора мыши на сенсорную область не перетаскивайте палец и не отводите палец от экрана, вы знаете, точно так же, как при записи на пленку, произойдет событие up