example - ¿Cuánto tiempo dura el evento en LongPress en Android?
set gesture detector to view (6)
Android admite un evento en LongPress. La pregunta que tengo es ''¿cuánto tiempo'' (en milisegundos) es la ''prensa'' para activar el evento?
El tiempo de prensado prolongado estándar es el que devuelve getLongPressTimeout() , que actualmente es de 500ms pero puede cambiar (en 1.0 fue de 1000ms pero se modificó en una versión posterior, tal vez en el futuro será personalizable por el usuario).
El navegador usa su propio tiempo de pulsación larga porque tiene interacciones más complicadas. Creo que esto debería ser 1000, aunque nuevamente puede cambiar en el futuro. No agrega los diferentes tiempos de espera juntos.
En general, como mencionó Roman Nurik , puede usar ViewConfiguration.getLongPressTimeout() para obtener programáticamente valor de valor de pulsación larga. El valor predeterminado es 500ms.
/**
* Defines the default duration in milliseconds before a press turns into
* a long press
*/
private static final int DEFAULT_LONG_PRESS_TIMEOUT = 500;
Sin embargo, la duración de la pulsación larga se puede personalizar globalmente al configurarla en accesibilidad. Los valores son Corto (400 ms), Medio (1000 ms) o Largo (1500 ms). Puedes ver su código fuente en Settings :
// Long press timeout.
mSelectLongPressTimeoutPreference =
(ListPreference) findPreference(SELECT_LONG_PRESS_TIMEOUT_PREFERENCE);
mSelectLongPressTimeoutPreference.setOnPreferenceChangeListener(this);
if (mLongPressTimeoutValueToTitleMap.size() == 0) {
String[] timeoutValues = getResources().getStringArray(
R.array.long_press_timeout_selector_values);
mLongPressTimeoutDefault = Integer.parseInt(timeoutValues[0]);
String[] timeoutTitles = getResources().getStringArray(
R.array.long_press_timeout_selector_titles);
final int timeoutValueCount = timeoutValues.length;
for (int i = 0; i < timeoutValueCount; i++) {
mLongPressTimeoutValueToTitleMap.put(timeoutValues[i], timeoutTitles[i]);
}
}
Esto es lo que R.array.long_press_timeout_selector_titles tiene el R.array.long_press_timeout_selector_titles aspecto:
<!-- Titles for the list of long press timeout options. -->
<string-array name="long_press_timeout_selector_titles">
<!-- A title for the option for short long-press timeout [CHAR LIMIT=25] -->
<item>Short</item>
<!-- A title for the option for medium long-press timeout [CHAR LIMIT=25] -->
<item>Medium</item>
<!-- A title for the option for long long-press timeout [CHAR LIMIT=25] -->
<item>Long</item>
</string-array>
<!-- Values for the list of long press timeout options. -->
<string-array name="long_press_timeout_selector_values" translatable="false">
<item>400</item>
<item>1000</item>
<item>1500</item>
</string-array>
Hmmm ... Esperaba obtener el tiempo acumulativo. Por lo que puedo decir, getLongPressTimeout () , ¿es el tiempo del componente que se agrega cuando se determina que event-press es start, además de TAP_TIMEOUT, más ??? y luego 1000ms si está en el navegador web.
He calculado que es 1650ms pero me gustaría tener alguna confirmación del valor resultante . La razón es que necesito algo que no esté integrado con el SDK para predecir la retención prolongada.
Creo que el valor de getLongPressTimeout es de 500ms, pero el gesto claramente lleva más tiempo, más cerca de 2 segundos.
Ver (y, por lo tanto, la mayoría de sus subclases) usa getLongPressTimeout. Quizás el tiempo de espera predeterminado no fue suficiente en el navegador.
Puede usar el método getLongPressTimeout
en android.view.ViewConfiguration
para determinar este valor mediante programación.
Ver los documentos para más detalles.