2010-10-02 42 views
0

我目前使用的情況下如何暫時禁用/旁路了Android的onTouchEvent

@Override 
public boolean onTouchEvent(MotionEvent ev) 
{ 

提供從遊戲中我寫的用戶反饋。這個事件引發了一些需要花費一些時間才能完成的遊戲控制事件(因爲涉及動畫)。我遇到的問題是在動畫期間,如果我不斷觸摸屏幕(AKA觸發此事件),我將得到一個超時錯誤:

10-02 21:58:30.776:錯誤/ ActivityManager(67):原因:keyDispatchingTimedOut

基本上同時在動畫運行,我不需要這種情況下,雖然這將是很好排隊吧。

我能做些什麼來防止超時,要麼排隊事件,或暫時禁用它?

謝謝。

+0

使用標誌,當標誌爲真時。回去。否則,處理事件 – qrtt1 2010-10-03 02:29:32

回答

0

你任何機會阻塞UI線程?應該有絕對沒有理由這樣做你所要求的(它甚至不能:)

+0

你能解釋「阻塞線程嗎?」我可能正在做。我基本上在做我自己的動畫。一個線程繪製屏幕,​​另一個線程在移動繪圖之間使用延遲。這個OnTouchEvent觸發移動drawables。 – user432209 2010-10-03 13:07:36

0

除了什麼羅曼說。
您可能想睡onTouchEvent。以實施

+0

不幸的是,我不能這樣做,因爲動畫可能需要從0.5秒到5或更多。 – user432209 2010-10-03 13:12:40

+0

你是什麼意思?你如何運行你的動畫?我正在使用GLSurfaceView,它使用它自己的渲染線程。當我收到一個touchevent時,我設置了一個布爾值來播放動畫。然後在渲染線程中,我檢查是否在渲染運行期間播放動畫。您仍然可以在事件中入睡,而不會影響您的動畫。 – 2010-10-04 04:13:53

0

簡單的方法是在它添加transaperent佈局(在你的XML填充家長的高度和寬度添加它)。

在動畫開始transaparentlayout.setClickabe(真);在動畫結束transaparentlayout.setClickabe(false);

很簡單。