Подтвердить что ты не робот

Как мое мнение может реагировать на колесико?

У меня есть представление с onTouch, которое может различать сенсорный ввод и щелчки левой/средней/правой кнопки мыши, как в

@Override
public boolean onTouch(View v, MotionEvent event) {
  if (event.getButtonState() == MotionEvent.BUTTON_PRIMARY) // API 14 required
    ...
  ...
}

Мне также хотелось бы, чтобы это мнение отвечало на колесико. onTouch - это не так, и я не нашел другого обработчика событий для ответа на колесико. Может быть, представление может притворяться прокручиваемым и делать свою вещь с помощью методов прокрутки? На данный момент я отказался и использую ввод с клавиатуры (от 1 до 9, плюс 0), чтобы выбрать отображаемые элементы, которые я бы предпочел выбрать с помощью мыши.
Таким образом, был бы оценен твердый намек или немного кода.

Не беспокойтесь, что пользовательский интерфейс, требующий клавиатуры и мыши, будет наложен на публику; приложение является инструментом разработки.

EDIT: правильный ответ приведен ниже, но именно так этот вопрос более полезен будущим читателям, это (слегка отредактированный) фактический код, который я использую в результате:

@Override
public boolean onGenericMotionEvent(MotionEvent event) {
  if (0 != (event.getSource() & InputDevice.SOURCE_CLASS_POINTER)) {
    switch (event.getAction()) {
      case MotionEvent.ACTION_SCROLL:
        if (event.getAxisValue(MotionEvent.AXIS_VSCROLL) < 0.0f)
          selectNext()
        else
          selectPrev();
        return true;
    }
  }
  return super.onGenericMotionEvent(event);
}
4b9b3361

Ответ 1

Принятым ответом была ссылка документа, которая привела меня к примеру кода в вопросе, но этот ответ был удален. Чтобы этот вопрос больше не отображался "без ответа", так ваше мнение может реагировать на колесико мыши:

@Override
public boolean onGenericMotionEvent(MotionEvent event) {
  if (0 != (event.getSource() & InputDevice.SOURCE_CLASS_POINTER)) {
    switch (event.getAction()) {
      case MotionEvent.ACTION_SCROLL:
        if (event.getAxisValue(MotionEvent.AXIS_VSCROLL) < 0.0f)
          selectNext();
        else
          selectPrev();
        return true;
    }
  }
  return super.onGenericMotionEvent(event);
}

Ответ 2

Действие события колеса мыши считается событием прокрутки