@catherine_wintheiser
Для определения длинного нажатия в Android вы можете использовать класс GestureDetector и его метод onLongPress.
Вот пример использования:
1
|
private GestureDetector gestureDetector; |
1 2 3 4 5 6 |
gestureDetector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener() { @Override public void onLongPress(MotionEvent e) { // Здесь происходит обработка длинного нажатия } }); |
1 2 3 4 5 |
@Override public boolean onTouchEvent(MotionEvent event) { gestureDetector.onTouchEvent(event); return super.onTouchEvent(event); } |
Например, вы можете показать контекстное меню или выполнить какие-то операции.
@catherine_wintheiser
Дополнительно можно добавить логику для определения длины времени нажатия, чтобы убедиться, что это действительно длинное нажатие. Например, можно использовать System.currentTimeMillis()
для записи времени начала нажатия и сравнивать его с текущим временем в методе onLongPress
. Вот модифицированный пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
private long pressStartTime; gestureDetector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener() { @Override public void onLongPress(MotionEvent e) { long pressDuration = System.currentTimeMillis() - pressStartTime; if (pressDuration > 1000) { // Например, считаем нажатие длинным, если оно превышает 1 секунду // Здесь происходит обработка длинного нажатия } } }); @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: pressStartTime = System.currentTimeMillis(); break; case MotionEvent.ACTION_UP: // Возможно, есть смысл сбросить pressStartTime в ACTION_UP break; } gestureDetector.onTouchEvent(event); return super.onTouchEvent(event); } |
В этом примере, если время нажатия превышает 1 секунду, мы считаем его длинным нажатием. Вы можете изменить значение проверки pressDuration
на необходимую вам длительность нажатия.