15

onTouch次のように、タッチ入力とマウスの左/中/右クリックを区別できるビューがあります。

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

また、このビューがマウスホイールに反応するようにしたいと思います。 onTouch方法ではなく、マウスホイールに応答する他のイベントハンドラーも見つかりませんでした。たぶん、ビューはスクロール可能なふりをして、スクロールメソッドで独自のことをすることができますか? この時点で、私はあきらめて、キーボード入力 (1 から 9 に加えて 0) を使用して、マウスホイールで選択したい表示要素を選択しています。
したがって、しっかりしたヒントまたは少しのコードをいただければ幸いです。

キーボードとマウスを必要とする Android UI が公開されることを心配する必要はありません。アプリは開発ツールです。

編集: 正しい答えを以下に示しますが、この質問が将来の読者にとってより役立つように、これは (少し編集された) 結果として使用している実際のコードです:

@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);
}
4

2 に答える 2

12

受け入れられた回答は、質問のサンプル コードにつながるドキュメント リンクでしたが、その回答は削除されました。この質問が「未回答」にならないように、ビューがマウスホイールに応答する方法は次のとおりです。

@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);
}
于 2015-10-12T16:35:12.403 に答える
0

マウス ホイール イベント アクションは、スクロール イベントと見なされます。

于 2015-03-02T10:36:34.733 に答える