Android支持onLongPress上的事件。我的问题是“多长时间”(以毫秒为单位)是触发事件的“按下”?
答案 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)
我已将其计算为1650毫秒,但我希望确认结果值。原因是我需要一些未与SDK集成的东西来预测长期持有。
我相信getLongPressTimeout的值是500毫秒,但手势显然需要更长时间 - 接近2秒。
答案 5 :(得分:0)
View(因此大多数子类)使用getLongPressTimeout。也许浏览器中的默认超时时间不够。