2013-02-17 251 views
1

我正在嘗試製作多點觸控控件,但當我將其手指以不同的順序取出時,我總是會收到錯誤信息,因爲我將它放到了屏幕上。Android多點觸控控件

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    pointers = event.getPointerCount(); 
    for(int a = 0; a < event.getPointerCount(); a++) { 
     expos[a] = (int) event.getX(event.getPointerId(a)); 
     eypos[a] = (int) event.getY(event.getPointerId(a)); 
    } 
    if(event.getAction() == MotionEvent.ACTION_DOWN) pressed = true; 
    if(event.getAction() == MotionEvent.ACTION_UP) pressed = false; 
    return true; 
} 

我想問題是,當我刪除第一個手指,第二個仍然有id 2,但我能做些什麼來解決它?

回答

1

據我所知,問題在於,當您釋放其中一個手指時,您不會收到ACTION_UP事件。解決方案是使用ACTION_POINTER_UP。它會檢測任何非主要指針的發佈,並且應該解決問題

+0

但是對於ACTION_POINTER_UP,我只知道指針何時以不同的順序被移除。如何刪除指針1時將指針2指向指針1? – user2080326 2013-02-17 13:56:09

+0

這是自動完成的。您使用getPointerID的問題ID,但您不需要它。而不是: [a] =(int)event.getX(event.getPointerId(a));你必須寫: [] a =(int)event.getX – vicciu 2013-02-17 14:03:45