Come posso implementare il doppio clic per un pulsante in Android? Devo usare OnDoubleTapListener?Attuare doppio clic sul pulsante in Android
14
A
risposta
3
Questo è un buon sito per l'esecuzione di un doppio clic ... ho usato e ha funzionato .
http://mobile.tutsplus.com/tutorials/android/android-gesture/
4
questo è probabilmente un buon punto di partenza:
Android: How to detect double-tap?
vi consiglio di passare a un modo più nativa come premere a lungo (risposta alla domanda linked) o qualcosa di più creativo (con multi-touch), a meno che tu non sia piegato sul modo di fare doppio clic predefinito di Windows?
È possibile che ci sia un valido motivo per cui - fare doppio clic su è dopo tutto più veloce della pressione prolungata.
28
int i = 0;
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
i++;
Handler handler = new Handler();
Runnable r = new Runnable() {
@Override
public void run() {
i = 0;
}
};
if (i == 1) {
//Single click
handler.postDelayed(r, 250);
} else if (i == 2) {
//Double click
i = 0;
ShowDailog();
}
}
});
3
Ho scritto questo per spuntare un messaggio Toast su un doppio clic in un'applicazione di mapping:
private long lastTouchTime = -1;
@Override
public boolean onTouchEvent(MotionEvent e, MapView mapView) {
GeoPoint p = null;
if (e.getAction() == MotionEvent.ACTION_DOWN) {
long thisTime = System.currentTimeMillis();
if (thisTime - lastTouchTime < 250) {
// Double click
p = mapView.getProjection().fromPixels((int) e.getX(), (int) e.getY());
lastTouchTime = -1;
} else {
// too slow
lastTouchTime = thisTime;
}
}
if (p != null) {
showClickedLocation(p);// Raise a Toast
}
return false;
}
1
private long lastTouchTime = 0;
private long currentTouchTime = 0;
..
@Override
public void onClick(View view) {
lastTouchTime = currentTouchTime;
currentTouchTime = System.currentTimeMillis();
if (currentTouchTime - lastTouchTime < 250) {
Log.d("Duble","Click");
lastTouchTime = 0;
currentTouchTime = 0;
}
}
Questo non tiene conto di eventuali vincoli temporali [] (http://stackoverflow.com/a/15353499/636571). – an00b
@ an00b controlla la risposta aggiornata con limiti di tempo –
Ah, capito. +1. – an00b