我想知道如何爲MotionEvent獲取準確的get(x)和get(y)值?正在發生的事情是,當我觸摸屏幕上的特定區域時,我會告訴一個動作發生。 問題是,一旦我觸摸屏幕並取下手指,它仍然認爲我的手指位於相同的位置(因爲這是我觸摸的最後一個位置)。因此,當我有多個Down事件(用於多點觸控)時,它會拋出所有內容。有沒有辦法重置X和Y值,所以當我放棄屏幕,他們回到0或空(或其他)?MotionEvent問題
這是我剛剛上傳,以便更好地解釋它的視頻,原因它是一種混亂
http://www.youtube.com/watch?v=OHGj2z5SwQs
這裏是我使用
int x = (int) e.getX();
int y = (int) e.getY();
int x2 = (int) e.getX(1);
int y2 = (int) e.getY(1);
boolean a1 = y > 0 && y < 200....etc
boolean a5 = etc...
switch (e.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
x = 0;
y = 0;
x2 = 0;
y2 = 0;
////I'm setting the x and y values to 0 as suggested
text.setText("x:" + String.valueOf(x) + "y:" + String.valueOf(y));
//// This is so I can see the values on the screen
if (a1 && a5){
viewA1.setBackgroundColor(Color.GREEN);
viewA5.setBackgroundColor(Color.GREEN);
}
if (a1) {
viewA1.setBackgroundColor(Color.GREEN);
}
else if (a5) {
viewA5.setBackgroundColor(Color.GREEN);
}
break;
case MotionEvent.ACTION_POINTER_1_DOWN:
// /A Strummer
x = 0;
y = 0;
x2 = 0;
y2 = 0;
text1.setText("x:" + String.valueOf(x2) + "y:" + String.valueOf(y2));
if (a1 && a5){
viewA1.setBackgroundColor(Color.GREEN);
viewA5.setBackgroundColor(Color.GREEN);
}
if (a1) {
viewA1.setBackgroundColor(Color.GREEN);
}
else if (a5) {
viewA1.setBackgroundColor(Color.GREEN);
}
/////I have pretty much the same method for ACTION_UP & ACTION_POINTER_UP; I set x & y to 0.
請讓確切的代碼我知道你是否可以想到任何事情。我嘗試了你們解釋過的方法,看起來會有所幫助,但事實並非如此。
@ Peter Knego我剛纔那樣做,PointerCount是準確的。任何其他想法? – Tanner