Android中的事件onLongPress有多长时间了?

时间:2009-12-18 21:54:59

标签: android events gesture

Android支持onLongPress上的事件。我的问题是“多长时间”(以毫秒为单位)是触发事件的“按下”?

6 个答案:

答案 0 :(得分:40)

标准的长按时间是由getLongPressTimeout()返回的,当前为500毫秒,但可能会发生变化(1.0为1000毫秒但在以后的版本中有所改变;未来可能是用户可自定义的)

浏览器使用自己的长按时间,因为它有一些更复杂的交互。我相信这应该是1000,但将来可能会改变。它不是一起添加不同的超时。

答案 1 :(得分:18)

您可以使用getLongPressTimeout中的android.view.ViewConfiguration方法以编程方式确定此值。

有关详细信息,请参阅the docs

答案 2 :(得分:3)

通常like Roman Nurik mentioned,您可以使用ViewConfiguration.getLongPressTimeout()以编程方式获取长按值。默认值为500毫秒。

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

但是,通过将其设置为可访问性,可以全局自定义长按持续时间。值为短(400毫秒),中(1000毫秒)或长(1500毫秒)。您可以在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]);
    }
}

答案 3 :(得分:2)

这是R.array.long_press_timeout_selector_titles的样子:

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

答案 4 :(得分:1)

嗯......我希望得到累积的时间。据我所知, getLongPressTimeout(),是确定event-press开始时添加的组件时间加上TAP_TIMEOUT,加上???如果在网络浏览器中,则为1000毫秒。

我已将其计算为1650毫秒,但我希望确认结果值。原因是我需要一些未与SDK集成的东西来预测长期持有。

我相信getLongPressTimeout的值是500毫秒,但手势显然需要更长时间 - 接近2秒。

答案 5 :(得分:0)

View(因此大多数子类)使用getLongPressTimeout。也许浏览器中的默认超时时间不够。