【发布时间】:2013-08-06 00:18:12
【问题描述】:
我正在尝试实现长按键识别,我已经覆盖了 onKeyDown
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// event.startTracking();
if (backPressedStarted == -1) {
progressBar.setProgress(0);
progressBar.setVisibility(View.VISIBLE);
backPressedStarted = System.currentTimeMillis();
} else {
int pressDuration = (int) (System.currentTimeMillis() - backPressedStarted);
progressBar.setProgress(pressDuration);
if (pressDuration > 5000)
showExitDialog();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
大约 3.8 秒后,系统调度一个带有标志的 onKeyUp 事件:FLAG_CANCELED
我尝试忽略它并在 key up 方法中返回 true 或 false,但它似乎不起作用...
有没有办法解决这个问题?我可以定义最长的新闻持续时间吗?
== 更新 ==
好的,所以当我删除事件跟踪的评论时,会调用长点击回调,然后返回true或false仍然不会改变keyUp取消的最终结果。
谢谢。
【问题讨论】:
-
onKeyLongPress()或onBackPressed()可以代替吗? -
永远不会调用长按...而只有当我在活动中添加 return super.onKeyDown(...) 时才会调用后按。
-
我已经更新了问题
标签: android back-button keyevent