Как обнаружить двойное касание / постукивание по Android ListView? - PullRequest
5 голосов
/ 26 декабря 2009

Знаете ли вы о том, как обнаружить два касания / нажатия на ListView?

Я пытаюсь вызвать следующий метод при двойном касании:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
}

Заранее спасибо.

Ответы [ 6 ]

4 голосов
/ 26 декабря 2009

Почему вы не используете Long Touch? Или вы уже используете это для чего-то другого? Преимущества перед долгим касанием над двойным касанием:

  • Long Press - рекомендуемое взаимодействие в Руководстве по пользовательскому интерфейсу, двойное касание - нет.
  • Это то, что ожидают пользователи; пользователь может не найти действие двойного касания, поскольку он не будет искать его
  • Это уже обработано в API .
2 голосов
/ 07 января 2012

Изменить:

Смотрите здесь: Вовлечение CountDownTimer: https://github.com/NikolaDespotoski/DoubleTapListView Вовлечение обработчика: http://code.google.com/p/double-tap-listview-handler/ https://github.com/NikolaDespotoski/DoubleTapListViewHandler Мое краткое объяснение: http://mobisys.in/blog/2012/01/how-to-detect-double-taps-on-listview-items-in-android/

1 голос
/ 19 января 2011

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

1 голос
/ 27 декабря 2009

Если вы настроены на использование двойного касания в вашем пользовательском интерфейсе, вы всегда можете сохранить состояние в вашем Actvity или другом контейнере.

Простая реализация будет хранить время регистрации касания и сравнивать его с последующим событием касания, чтобы определить, попадает ли время, прошедшее с момента второго касания, в какой-либо диапазон, который вы определяете для двойной вкладки.

0 голосов
/ 27 июля 2017

Мой ответ основан на этой ссылке , и она работает для меня.


final GestureDetector gestureDectector = new GestureDetector(mContext, new GestureListener());
        listview.setOnTouchListener(new OnTouchListener() {</p>

<pre><code>        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_MOVE) {
                return false;
            }
            gestureDectector.onTouchEvent(event);
            return true;
        }
    });

класс GestureListener расширяет GestureDetector.SimpleOnGestureListener {

public boolean onDoubleTap (MotionEvent e) { int position = listview.pointToPosition ((int) e.getX (), (int) e.getY ()); if (позиция
0 голосов
/ 15 мая 2014

Я думаю, что для двойного касания или касания вы должны использовать GestureDetector и его методы на ощупь для одиночного и двойного касания. вот ссылка на референс http://www.linux.com/learn/tutorials/715651-make-android-multi-touch-coding-simpler-with-gesturedetector

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...