Android支持一个名为onLongPress的事件。我想知道触发这个事件需要按住多长时间(以毫秒为单位)?
标准长按时间是由getLongPressTimeout()返回的,目前为500毫秒,但可能会更改(1.0版本中为1000毫秒,但在后续版本中进行了更改;将来可能会用户可自定义)。
浏览器使用自己的长按时间,因为它具有一些更复杂的交互。 我相信这应该是1000,但也可能会在将来更改。 它不会将不同的超时时间相加。
一般来说,您可以使用ViewConfiguration.getLongPressTimeout()编程方式获取长按值。默认值为500毫秒,就像Roman Nurik所提到的那样。
/**
* 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毫秒)。您可以在设置中查看其源代码:
// 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]);
}
}
<!-- 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>
嗯...我希望能得到累计时间。据我所知,getLongPressTimeout()是组件时间,在确定事件按下开始时添加的时间,加上TAP_TIMEOUT,再加上???,然后如果在Web浏览器中,则为1000ms。
我已经计算出它为1650ms,但我想确认一下结果值。原因是我需要一些与SDK集成无关的东西来预测长按。
我认为getLongPressTimeout的值为500ms,但手势明显需要更长时间——接近2秒。
View(以及它的大多数子类)使用getLongPressTimeout。也许在浏览器中默认的超时时间不够。