studio - Implementar doble clic para el botón en Android
personalizar botones android studio (5)
¿Cómo puedo implementar el doble clic para un botón en Android? ¿Debo usar OnDoubleTapListener?
Escribí esto para mostrar un mensaje de Toast con un doble clic en una aplicación de mapeo:
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;
}
Este es probablemente un buen lugar para comenzar:
Android: ¿Cómo detectar el doble toque?
Recomiendo cambiar a una forma más nativa, como presionar prolongadamente (responder a una pregunta vinculada) o algo más creativo (usando multitáctil), a menos que esté inclinado a la forma predeterminada de hacer doble clic en Windows para hacer las cosas.
Sin embargo, puede que tenga una razón válida: hacer doble clic es, después de todo, más rápido que presionar prolongadamente.
Este es un buen sitio para realizar doble clic ... Lo usé y funcionó.
http://mobile.tutsplus.com/tutorials/android/android-gesture/
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();
}
}
});
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;
}
}