2012-06-02 24 views
2

我在我的應用中通過definyng實現了多點觸摸按鈕,並將我的OnTouchListener(和onTouch方法)版本附加到我的所有按鈕上。 除了一件似乎屬於聽衆標準行爲的東西外,所有作品都完美無缺。我希望能夠在沒有發佈代碼的情況下解釋它,因爲它很長。Android:OnTouchListener.OnTouch未在multiTouch中調用

如果我點擊並按住按鈕,則按預期方式調用onTouch方法,並且應用程序看到按鈕被點擊。 如果我單擊並按住第二個按鈕,則會按預期方式調用onTouch方法(與第一個按鈕相關),並且應用程序看到按鈕被單擊。

如果我只釋放第二個按鈕,如果我的手指在第一個按鈕上保持ABSOLUTELY靜止,onTouch事件不會被調用,第二個按鈕不會被邏輯釋放。僅當我移動至少一個像素的第一根手指時,纔會調用onTouch方法,並且只有在那一刻第二個按鈕纔會被釋放。

我知道很難將手指精確地保持在同一位置超過一毫秒:-)但有時會發生......我不得不花一些時間來理解此行爲的原因,我沒有找到解決方案,你有什麼建議來解決這個問題嗎? 非常感謝。

回答

0

試試這個你onTouch

PointF curr = new PointF(event.getX(), event.getY()); 
switch (event.getAction()) { 
    case MotionEvent.ACTION_UP: 
     float xDiff = Math.abs(curr.x-start.x); 
     float yDiff = Math.abs(curr.y-start.y); 
     if (xDiff < 5f && yDiff < 5f) { 
     //insert here your code when button is click 
     } 
    break; 

內這幫助我避免推的誤差。

+0

你好,謝謝,但我的問題是,onTouch不叫:-)也許我將不得不爲每個按鈕創建同一類的不同監聽器 – jenergy