我在應用程序中重寫了onKeyDown
和onMotionEvent
。這兩個工作,但onKeyDown
有奇怪的行爲。我總是可以與設備上的屏幕進行交互,但在與屏幕交互後,按鈕不起作用。爲了讓他們再次工作,我必須推動其他按鈕(我不使用的按鈕),以便他們再次工作。如果我再次與屏幕交互,這些按鈕將不會再工作。Android:與屏幕交互鎖定按鈕
我正在編寫的應用程序是一個遊戲,所以按鈕調用是對錶面進行的,然後傳遞給運行遊戲的線程。
我在HTC Aria上調試,但問題仍然存在於我的模擬器中。
EDIT
基本代碼我有相同是詳細here。
代碼的按鈕如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent msg) {
return thread.doKeyDown(keyCode, msg);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return thread.doTouchEvent(event);
}
public boolean doKeyDown(int keyCode, KeyEvent msg) {
synchronized (mSurfaceHolder) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
showDialog(DIALOG_PAUSED_ID);
return true;
}
return false;
}
}
public boolean doTouchEvent(MotionEvent event) {
synchronized (mSurfaceHolder) {
if (mState == STATE_PLAYING) {
if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE){
if (event.getX() > 2 * (mWallX/3)) {
//shoot arrow
shoot(event.getX(), event.getY());
//turn player
mPlayer.rotate(event.getX(), event.getY());
return true;
} else if (event.getAction() != MotionEvent.ACTION_MOVE && event.getX() < 2 * (mWallX/3)) {
//temp button on left for stress test
stressTest = !stressTest;
return true;
}
}
}
return false;
}
}
你從onKeyDown返回什麼? – 2010-11-21 07:47:42
你是否阻止UI線程?即將控制從事件處理程序傳遞給遊戲代碼。你能發佈有問題的代碼嗎? – 2010-11-21 09:08:00
後期代碼..你可能會阻止UI線程,這將描述你所看到/體驗的關鍵行爲 – 2010-11-21 13:19:57