Wie lange dauert das Event onLongPress im Android?

Lesezeit: 4 Minuten

Android unterstützt ein Ereignis onLongPress. Die Frage, die ich habe, ist “wie lange” (in Millisekunden) ist die “Presse”, um das Ereignis auszulösen?

Benutzeravatar von hackbod
hackbod

Die standardmäßige lange Presszeit ist das, was zurückgegeben wird getLongPressTimeout()die derzeit 500 ms beträgt, sich aber ändern kann (in 1.0 waren es 1000 ms, wurde aber in einer späteren Version geändert; vielleicht wird sie in Zukunft vom Benutzer anpassbar sein).

Der Browser verwendet seine eigene lange Druckzeit, da er einige kompliziertere Interaktionen hat. Ich glaube, das sollte 1000 sein, obwohl es sich in Zukunft wieder ändern kann. Es addiert die verschiedenen Timeouts nicht zusammen.

  • Bist du dir da sicher? Meine Beobachtung ist 1650 ms (1750 ms, um sicherzugehen, bei anderer Prozesslast) im Webbrowser. Können Sie einige Labornotizen oder Android-Dokumente bereitstellen?

    – mobibob

    22. Dezember 2009 um 23:08 Uhr

  • .. auch, wenn man sich den Quellcode ansieht, startet die LONG-Zeit ihre Zeitmessung erst, wenn ein kurzes Drücken erkannt wird. Deshalb glaube ich, dass es entlang des Staates kumulativ ist. Ich bestreite Ihre Aussage nicht, sondern diskutiere nur, um sicherzustellen, dass die Antwort gründlich ist und meine Frage nicht missverstanden wird.

    – mobibob

    22. Dezember 2009 um 23:12 Uhr

  • Leider (für mich) ist dies die einzig richtige Antwort auf meine Frage. Aber … was ich wirklich lernen wollte, war die Zeit vom Beginn eines gedrückten Haltens bis zum Öffnen eines “Resolver” -Dialogs im Browser. Ich messe 1.650 Sekunden, also möchte ich die fehlenden 650 ms finden. Ich werde die Antwort an Hackbod vergeben und allen anderen für ihre Kommentare danken.

    – mobibob

    27. Dezember 2009 um 4:20 Uhr

  • Die lange Druckdauer ist bereits anpassbar. Sie können es in der Barrierefreiheit einstellen. Die Werte sind kurz, normal oder lang. Benutzer verwenden also möglicherweise eine benutzerdefinierte Dauer (ich bin)

    – Verrückte

    18. Dezember 2014 um 14:20 Uhr

Du kannst den … benutzen getLongPressTimeout Methode ein android.view.ViewConfiguration um diesen Wert programmgesteuert zu bestimmen.

Sehen die Dokumente für Details.

Benutzeravatar von Viking Den
Wikingerhöhle

Im Allgemeinen können Sie, wie Roman Nurik erwähnte, verwenden ViewConfiguration.getLongPressTimeout() um programmgesteuert den Wert für langes Drücken zu erhalten. Der Standardwert ist 500 ms.

/**
 * Defines the default duration in milliseconds before a press turns into
 * a long press
 */
private static final int DEFAULT_LONG_PRESS_TIMEOUT = 500;

Die Dauer des langen Drückens ist jedoch global anpassbar, indem Sie sie in der Barrierefreiheit einstellen. Mögliche Werte sind Kurz (400 ms), Mittel (1000 ms) oder Lang (1500 ms). Sie können den Quellcode in sehen Einstellungen:

// 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]);
    }
}

Das ist was R.array.long_press_timeout_selector_titles aussehen:

    <!-- 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>

Benutzeravatar von mobibob
mobibob

Hmmm … Ich hatte gehofft, die kumulierte Zeit zu bekommen. Soweit ich sagen kann, getLongPressTimeout(), ist die Komponentenzeit, die hinzugefügt wird, wenn event-press als Start bestimmt wird, plus TAP_TIMEOUT, plus ??? und dann 1000 ms, wenn im Webbrowser.

Ich habe es mit 1650 ms berechnet, aber ich hätte gerne eine Bestätigung dafür resultierende Wert. Der Grund ist, dass ich etwas benötige, das nicht in das SDK integriert ist, um den Long-Hold vorherzusagen.

Ich glaube, der Wert von getLongPressTimeout beträgt 500 ms, aber die Geste dauert eindeutig länger – näher an 2 Sekunden.

Benutzeravatar von James
James

View (und damit die meisten seiner Unterklassen) verwendet getLongPressTimeout. Möglicherweise war das Standard-Timeout im Browser nicht ausreichend.

1393680cookie-checkWie lange dauert das Event onLongPress im Android?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy