Estoy escuchando los eventos largos de clic de una Vista a través de setOnLongClickListener(). ¿Puedo cambiar la demora/duración del clic prolongado?Cambiar demora larga de clic
Respuesta
AFAIK, no. Está cableado en el marco a través del getLongPressTimeout()
en ViewConfiguration
.
Le invitamos a manejar sus propios eventos táctiles y definir su propio concepto de "clic largo". Solo asegúrese de que no sea muy diferente de lo que espera el usuario, y lo más probable es que el usuario espere lo que todas las demás aplicaciones usan, que es la duración estándar de 500 ms.
Esta fue la solución de trabajo más sencilla que encontré para esta restricción:
//Define these variables at the beginning of your Activity or Fragment:
private long then;
private int longClickDuration = 5000; //for long click to trigger after 5 seconds
...
//This can be a Button, TextView, LinearLayout, etc. if desired
ImageView imageView = (ImageView) findViewById(R.id.desired_longclick_view);
imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
then = (long) System.currentTimeMillis();
} else if (event.getAction() == MotionEvent.ACTION_UP) {
if ((System.currentTimeMillis() - then) > longClickDuration) {
/* Implement long click behavior here */
System.out.println("Long Click has happened!");
return false;
} else {
/* Implement short click behavior here or do nothing */
System.out.println("Short Click has happened...");
return false;
}
}
return true;
}
});
Ésta es mi manera durante el tiempo establecido para pulsación larga
private int longClickDuration = 3000;
private boolean isLongPress = false;
numEquipeCheat.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
isLongPress = true;
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (isLongPress) {
Vibrator vibrator = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(100);
// set your code here
// Don't forgot to add <uses-permission android:name="android.permission.VIBRATE" /> to vibrate.
}
}
}, longClickDuration);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
isLongPress = false;
}
return true;
}
});
Esto es lo que yo uso. Es similar a la respuesta de Cumulo Nimbus, con dos diferencias notables.
- Utilice los valores de eventos ya almacenados para el tiempo de inactividad y la hora actual. Además de no duplicar esfuerzos, esto tiene el bonito efecto de hacer que el oyente se pueda utilizar para múltiples vistas al mismo tiempo sin tener que rastrear los tiempos de inicio de cada evento individual.
- Compruebe
view.isPressed
para asegurarse de que el usuario no se haya alejado de la vista durante el evento táctil. Esto imita el comportamiento predeterminado del sistema paraonClick
yonLongClick
.
long longPressTimeout = 2000;
@Override
public boolean onTouch(View view, MotionEvent event) {
if (view.isPressed() && event.getAction() == MotionEvent.ACTION_UP) {
long eventDuration = event.getEventTime() - event.getDownTime();
if (eventDuration > longPressTimeout) {
onLongClick(view);
} else {
onClick(view);
}
}
return false;
}
Si la vista no es normalmente puede hacer clic usted tendrá que llamar a view.setClickable(true)
para la view.isPressed()
cheque para trabajar.
- 1. Demora de tiempo al hacer clic
- 2. jQuery Fadeout al hacer clic o después de la demora
- 3. Demora al cargar imágenes de fondo CSS
- 4. emergencias de título automáticamente sin demora
- 5. Demora de tiempo antes de redirigir
- 6. demora JQuery effects
- 7. llamada setTimeout sin demora
- 8. Demora: ¿Desplazarse en CSS3?
- 9. jquery demora que se siga un enlace
- 10. demora a MouseLeave en jQuery
- 11. Jquery cambiar imagen al hacer clic
- 12. Jquery móvil: Cambiar tema al hacer clic
- 13. Demora de consulta óptima para autocompletar
- 14. ¿Cómo puedo redireccionar después de la demora() con jQuery?
- 15. Pulsación larga Android
- 16. ¿Cuánto demora la notificación push ios?
- 17. ¿Socket.io demora en disparar el evento "desconectar"?
- 18. Demora y deduplicación con Reactive Extensions (Rx)
- 19. eliminar la tecla presionar demora en javascript
- 20. Intentando agregar demora a jQuery Solicitud AJAX
- 21. Curl: reposo/demora entre las solicitudes
- 22. jQuery: append() objeto, eliminar() con la demora()
- 23. ¿Cuánto demora ejecutar un archivo por lotes?
- 24. ¿Cuál es la demora máxima para setInterval?
- 25. ¿Cambiar el color de TextView que se puede hacer clic en el foco y hacer clic?
- 26. jQuery hacer clic/cambiar función en el botón de opción
- 27. Cambiar el comportamiento de Ctrl + clic en una JTable
- 28. jquery cambiar el estilo de un div al hacer clic
- 29. Cambiar el color de un ancla cuando se hace clic
- 30. implementación larga larga en máquina de 32 bits
¿Cómo definirías tu propio concepto de clic largo? – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
Gracias, supongo que me quedaré con el valor predeterminado por ahora. – fhucho
@zzzzzzzzzzzzzzzzzzzzzzzzzz probablemente anulando la Vista. Cool nombre de usuario BTW ;-) – fhucho