2012-06-13 11 views
13

は、私はまた、このビューがマウスホイールに対応するためにしたいようビューはどのようにマウスホイールに反応しますか?

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

のように、タッチ入力、右/ミドル/マウスの左クリックを区別することができますonTouchとの見解を持っています。 onTouchは道ではなく、マウスホイールに応答する他のイベントハンドラも見つかりませんでした。おそらく、ビューはスクロール可能なふりをして、スクロール方法で独自のことを行うことができますか?この時点で、私はあきらめて、キーボード入力(1~9、プラス0)を使用して、マウスホイールで選択したい表示要素を選択しています。
だから、しっかりとしたヒントや少しのコードをいただければ幸いです。

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

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); 
} 
+0

おそらくページアップなどのキーイベントがありますか? GoogleTVにはこれらのキーボードがありますが、スクロールホイールではなく、Dパッドについての話をすべて見つけることができます。 –

+0

@jeffamaphone、 'Toast.makeText(this、" ke: "+ KeyEvent.keyCodeToString(keyCode)、Toast.LENGTH_SHORT).show()はアクティビティの' onKeyDown'でnice出力を生成します。マウスホイールを操作すると静かです。 –

+1

まあ、価値があるショット。 –

答えて

5

受け入れられた回答は、質問のサンプルコードに私を導いたドキュメントリンクでしたが、その回答は削除されました。この質問はもう「未回答」には表示されなくなりました。これはあなたの意見がマウスホイールに反応する方法です:

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

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

関連する問題