2016-02-20 55 views
0

我試圖檢查什麼是觸摸屏幕,只要它被按下,指針被移動,或觸摸被釋放。ACTION_UP和ACTION_POINTER_UP事件的座標

問題是,當觸摸被釋放時,getPointerCount()包括剛剛離開屏幕的指針。所以當我嘗試收集所有當前的X和Y值時,它會包含一個已經離開屏幕的x/y對。

我目前做這樣的事情:

int count = e.getPointerCount(); 
for(i = 0; i < count; i++) { 
    x = e.getX(i); 
    y = e.getY(i); 
    /* do stuff with them */ 
} 

有沒有得到X的方式和Y座標是指針屏幕左側或移除左指針在屏幕上,並獲得唯一的座標是觸摸屏幕?

謝謝

回答

0

您是否嘗試過在應用程序中使用onTouchEvent?

import android.view.MotionEvent; 

... 

private int mActivePointerId; 

protected void onCreate(Bundle savedInstanceState){ 
    ... 
} 

public boolean onTouchEvent(MotionEvent event){ 

    // Get the pointer ID 
    mActivePointerId = event.getPointerId(0); 

    // ... Many touch events later... 

    // Use the pointer ID to find the index of the active pointer 
    // and fetch its position 

    int pointerIndex = event.findPointerIndex(mActivePointerId); 

    // Get the pointer's current position 
    float x = event.getX(pointerIndex); 
    float y = event.getY(pointerIndex); 

    return true; 

} 
+0

我正在使用onTouchEvent。我希望能夠在ACTION_DOWN,ACTION_MOVE或ACTION_UP發生(或它們的指針等價物)時檢查所有當前觸摸的座標。但是,當ACTION_UP發生時,事件仍然保持已釋放觸摸的座標,並且我的程序就像觸摸從未釋放一樣。我可能只需要做其他事情,比如跟蹤每個指針的ID。 – MutilatedMelon

+0

@MutilatedMelon我很抱歉,您可以通過每個指針的索引和ID跟蹤MotionEvent中的單個指針。我更新了答案,以更好地解決您的問題。希望這可以幫助。 –

0

我認爲你想要的方法是getActionIndex()。從文檔看來,當getActionMasked()返回ACTION_POINTER_UP時,此方法將返回相應的指針索引,然後您可以在循環中忽略它(或者對其執行其他操作)。

相關問題