Я наткнулся на что-то странное, я хочу прислушиваться к щелчкам, и когда это происходит, я хочу получить его направление, но кажется, что щелчок происходит три раза, в чем причина?
this.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
int x = (int) motionEvent.getX();
int y = (int) motionEvent.getY();
Log.i(LOGGING_CONST, "click performed x: " + x + " y: " + y);
}
}
});
@Override
public boolean performClick() {
return super.performClick();
}
Logcat после одного щелчка:
I/GAME_VIEW_CLASS:: click performed x: 481 y: 804
I/GAME_VIEW_CLASS:: click performed x: 481 y: 804
I/GAME_VIEW_CLASS:: click performed x: 481 y: 804
2 ответа
Потому что вы слушаете сенсорные события, а сенсорные события запускаются при каждом движении пальца. Попробуйте прослушать событие onDown. Например;
this.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
int x = (int) event.getX();
int y = (int) event.getY();
Log.i(LOGGING_CONST, "click performed x: " + x + " y: " + y);
break;
}
return true;
}
});
Вы слушаете все виды сенсорных событий, такие как ACTION_DOWN, ACTION_MOVE, ACTION_CANCEL
Если вы хотите щелкнуть одним нажатием, тогда слушайте только ACTION_DOWN,
Переключатель ( event.ACTION_DOWN ) :
{
Введите свой код здесь для одного щелчка
}
См. ссылку ниже:
https://developer.android.com/reference/android/view/MotionEvent
Новые вопросы
android
Android - это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфоны, планшеты, автомобили, телевизоры, одежда, стекло, IoT). Для тем, связанных с Android, используйте специальные теги Android, такие как android-intent, android-activity, android-адаптер и т. Д. Для вопросов, не связанных с разработкой или программированием, но связанных с платформой Android, используйте эту ссылку: https: // android.stackexchange.com .