jjN*_*ord 1 java double android click double-click
我希望能够在按下菜单按钮时检测单击或双击.如果检测到单击,则会发生偶数,如果检测到双击,则会发生不同的事件.这是我尝试过的(使用toast代替事件):
private static final long DOUBLE_PRESS_INTERVAL = 250; // in millis
private long lastPressTime;
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// Get current time in nano seconds.
long pressTime = System.currentTimeMillis();
// If double click...
if (pressTime - lastPressTime <= DOUBLE_PRESS_INTERVAL) {
Toast.makeText(getApplicationContext(), "Double Click Event", Toast.LENGTH_SHORT).show();
return true;
}
// If not double click....
Toast.makeText(getApplicationContext(), "Single Click Event", Toast.LENGTH_SHORT).show();
// record the last time the menu button was pressed.
lastPressTime = pressTime;
return true;
}
Run Code Online (Sandbox Code Playgroud)
问题是每次双击事件之前都会检测到单击事件.
Ian*_*Ian 14
简单的逻辑错误.您在录制新的lastPressTime之前返回.如果他们都返回相同的东西,你应该只有一个回复:
boolean mHasDoubleClicked = false;
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// Get current time in nano seconds.
long pressTime = System.currentTimeMillis();
// If double click...
if (pressTime - lastPressTime <= DOUBLE_PRESS_INTERVAL) {
Toast.makeText(getApplicationContext(), "Double Click Event", Toast.LENGTH_SHORT).show();
mHasDoubleClicked = true;
}
else { // If not double click....
mHasDoubleClicked = false;
Handler myHandler = new Handler() {
public void handleMessage(Message m) {
if (!mHasDoubleClicked) {
Toast.makeText(getApplicationContext(), "Single Click Event", Toast.LENGTH_SHORT).show();
}
}
};
Message m = new Message();
myHandler.sendMessageDelayed(m,DOUBLE_PRESS_INTERVAL);
}
// record the last time the menu button was pressed.
lastPressTime = pressTime;
return true;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9036 次 |
最近记录: |