Android支持onLongPress事件。 我的问题是"按"触发事件的时间有多长时间(以毫秒为单位)?
标准的长按时间是getLongPressTimeout()返回的时间,当前为500毫秒,但可能会更改(在1.0中为1000毫秒,但在以后的版本中有所更改;也许将来会由用户自定义)。
浏览器使用自己的长按时间,因为它具有一些更复杂的交互。我相信应该是1000,尽管将来可能还会改变。它不会将不同的超时时间加在一起。
您确定吗?我的观察是在Web浏览器上为1650毫秒(与其他进程负载相比,肯定为1750毫秒)。您可以找到一些实验室笔记或Android文档吗?
同样,在查看源代码时,直到检测到短按之后,长时间才开始计时。这就是为什么我认为它是沿着州累积的。我不是在挑战您的发言,只是在讨论以确保答案是透彻的,我的问题没有被误解。
不幸的是(对我而言),这是对我问题的唯一正确答案。但是...我真正想学习的是从按下按钮开始到浏览器弹出解析器对话框的时间。我正在测量1.650秒,所以我想找到丢失的650ms。我将授予hackbod答案,并感谢其他所有人的评论。
长按时间已经可以自定义。您可以在可访问性中进行设置。值可以是short,normal或long。因此,用户可能会使用用户定义的持续时间(我是)
您可以使用android.view.ViewConfiguration中的getLongPressTimeout方法以编程方式确定该值。
有关详细信息,请参阅文档。
通常,就像提到的Roman Nurik一样,您可以使用ViewConfiguration.getLongPressTimeout()以编程方式获取长按值。默认值为500ms。
/**
* Defines the default duration in milliseconds before a press turns into
* a long press
*/
private static final int DEFAULT_LONG_PRESS_TIMEOUT = 500;
但是,长按时间可以通过将其设置为可访问性来全局定制。值是短(400 ms),中(1000 ms)或长(1500 ms)。您可以在"设置"中查看其源代码:
// 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]);
}
}
这是R.array.long_press_timeout_selector_titles的样子:
Short
Medium
Long
400
1000
1500
嗯...我希望能得到累积的时间。据我所知,getLongPressTimeout()是确定事件按开始时添加到的组件时间,加上TAP_TIMEOUT和???如果在网络浏览器中,则为1000ms。
我已经计算出它是1650ms,但是我想对结果值进行一些确认。原因是我需要一些未与SDK集成在一起的东西来预测长期持有。
我相信getLongPressTimeout的值是500ms,但是手势显然需要更长的时间-接近2秒。
View(及其大多数子类)使用getLongPressTimeout。在浏览器中,默认超时可能还不够。