Jak mogę zaimplementować podwójne kliknięcie przycisku w systemie Android? Czy powinienem używać OnDoubleTapListener?Narzędzie do podwójnego kliknięcia przycisku w Androidzie
14
A
Odpowiedz
3
jest to dobre miejsce do wykonywania podwójnego kliknięcia ... użyłem go i pracował .
http://mobile.tutsplus.com/tutorials/android/android-gesture/
4
Prawdopodobnie jest to dobre miejsce, aby rozpocząć:
Android: How to detect double-tap?
polecam przejście na bardziej natywny sposób jak długie naciśnięcie (odpowiedź na połączonego pytanie) lub coś bardziej twórczego (za pomocą multi-touch), chyba że jesteś skłonny do domyślnego, dwukanałowego sposobu działania Windowsa?
Być może masz jednak ważny powód - dwukrotne kliknięcie jest po wszystkim szybszym niż długie naciśnięcie.
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
Napisałem to dla pojawiały się wiadomości toast na podwójne kliknięcie w aplikacji mapowania:
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;
}
}
nie biorą pod uwagę wszelkie [ograniczenia czasowe] (http://stackoverflow.com/a/15353499/636571). – an00b
@ an00b sprawdź zaktualizowaną odpowiedź z ograniczeniami czasowymi –
Ah, rozumiem. +1. – an00b