2016-02-20 2 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 происходит, событие все еще сохраняет координаты выпущенного касания, и моя программа действует, как прикосновение никогда не было выпущено. Мне просто нужно сделать что-то еще, например отслеживать идентификатор каждого указателя. – MutilatedMelon

+0

@MutilatedMelon Приносим извинения, вы можете отслеживать отдельные указатели внутри MotionEvent через индекс и идентификатор каждого указателя. Я обновил ответ, чтобы лучше ответить на ваш вопрос. Надеюсь это поможет. –

0

Я думаю, что метод, который вы хотите, это getActionIndex(). Из документации кажется, что когда getActionMasked() возвращает ACTION_POINTER_UP, этот метод вернет соответствующий указатель указателя, и вы можете проигнорировать его в своем цикле (или сделать что-то еще с ним).

Смежные вопросы