Ho una visione con una onTouch
in grado di distinguere tra l'input tocco e clic sinistro/centrale/destro del mouse, come inCome può la mia vista rispondere a una rotellina del mouse?
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getButtonState() == MotionEvent.BUTTON_PRIMARY) // API 14 required
...
...
}
Mi piacerebbe anche meglio di questa vista di rispondere alla rotella del mouse. onTouch
non è il modo, né ho trovato nessun altro gestore di eventi per rispondere alla rotellina del mouse. Forse la vista può fingere di essere scorrevole e fare le proprie cose con i metodi di scorrimento? A questo punto, mi sono arreso e sto usando l'input da tastiera (da 1 a 9, più 0) per selezionare gli elementi visualizzati che preferirei selezionare con la rotellina del mouse.
Sarebbe gradito un suggerimento o un po 'di codice.
Non preoccuparti che un'interfaccia utente Android che richiede una tastiera e un mouse venga applicata al pubblico; l'app è uno strumento di sviluppo.
EDIT: la risposta corretta è riportata qui sotto, ma solo così questa domanda è più utile per futuri lettori, questo è (leggermente modificato) il codice che sto usando come risultato:
@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);
}
Ti forse ottenere un evento chiave, come PageUp o qualcosa del genere? GoogleTV ha quelle tastiere, ma tutto quello che posso trovare parla di d-pad, non di scroll wheel. –
@jeffamaphone, 'Toast.makeText (questo," ke: "+ KeyEvent.keyCodeToString (keyCode), Toast.LENGTH_SHORT) .show()' produce un buon output nel 'onKeyDown' dell'attività. È silenzioso quando manipolo la rotellina del mouse. –
Bene, vale la pena sparare. –