2016-08-29 3 views
1

У меня есть OnTouchListener, и я жду событий вверх и вниз. Однако, когда пользователь прикасается к поверхности для быстрого/короткого, только событие вниз будет срабатывать, а не событие «вверх». Я исправил его временно с помощью потока сна, но я точно знаю, что это не идеальное решение. Кто-нибудь имеет лучшую идею?На сенсорном прослушиватель не срабатывает, когда пользователь слишком быстро

Button myButton = (Button) findViewById(R.id.button); 

myButton.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
        long timeLastTouch = System.currentTimeMillis(); 
        if (motionEvent.getAction() == MotionEvent.ACTION_UP) { 
         long timeTouchNow = System.currentTimeMillis(); 
         if (timeTouchNow - timeLastTouch < 400){ 
          return true; 
         } 
         return false; 
        } 
        if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 
         long timeNow = System.currentTimeMillis(); 
         if ((timeNow - timeLastTouch) < 400) { 
          // do stuff 
          return true; 
         } 
         return false; 
        } 
      } 
      return false; 
     } 
    } 
}); 

ответ

1

Tthis это неправильный путь, не используйте sleep() метод.

Удалите эту sleep() логику и объявите одну переменную и проверьте время последнего касания и текущую разницу времени касания, если разница больше 400 миллисекунд, тогда выполняется только код.

Если у вас возникнут какие-либо проблемы, вы получите комментарий, я разрешу вашу проблему, удачу.

+0

Хорошо, хорошо, но где я должен проверить, больше ли разница в 400 миллисекунд, а только выполнить код? – Dominic

+0

С помощью метода ontouch –

+0

Не могли бы вы взглянуть на мой новый код и рассказать, что с ним не так? – Dominic

0

Добавить сенсорный прослушиватель, создав ссылку на кнопку.

Button btn = (Button) findViewById(R.id.button); 
btn.setOnTouchListener(new OnTouchListener(){ 

.... 

}; 

ваш делают Button.setOnTouchListener(new OnTouchListener()

+0

У меня уже есть эта ссылка. – Dominic

+0

все еще есть проблема –

+0

Да, у меня есть проблема. Я хочу сделать это без сна. – Dominic

Смежные вопросы