Как получить положение касания в android?



Мне нужно получить положение начала касания (X , Y), положение движения касания и положение конца касания экрана в андроиде.

285   4  

4 ответов:

@Override
public boolean onTouchEvent(MotionEvent event) {
    int x = (int)event.getX();
    int y = (int)event.getY();
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
        case MotionEvent.ACTION_MOVE:
        case MotionEvent.ACTION_UP:
    }
return false;
}

эти три случая таковы, что вы можете реагировать на различные типы событий, в этом примере нажав или перетащив или подняв палец снова.

дополнительный ответ

предоставлена OnTouchListener

private View.OnTouchListener handleTouch = new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        int x = (int) event.getX();
        int y = (int) event.getY();

        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                Log.i("TAG", "touched down");
                break;
            case MotionEvent.ACTION_MOVE:
                Log.i("TAG", "moving: (" + x + ", " + y + ")");
                break;
            case MotionEvent.ACTION_UP:
                Log.i("TAG", "touched up");
                break;
        }

        return true;
    }
};

установить на какой-то вид:

myView.setOnTouchListener(handleTouch);

это дает вам координаты события касания относительно представления, которому назначен прослушиватель касания. Верхний левый угол вида (0, 0). Если вы переместите палец над видом, то y будет отрицательным. Если вы переместите палец влево от вида, то x будет отрицательным.

int x = (int)event.getX();
int y = (int)event.getY();

если вы хотите координаты относительно верхнего левого угла экрана устройства, затем используйте необработанные значения.

int x = (int)event.getRawX();
int y = (int)event.getRawY();

по теме

@Override
    public boolean onTouch(View v, MotionEvent event) {
       float x = event.getX();
       float y = event.getY();
       return true;
    }

вы можете реализовать дедуктор жестов, и на его событии onfling вы получаете два параметра из класса MotionEvent. Вы можете получить свои координаты x и y от них. Обратите внимание на этот пост для более подробной информации

обнаружение жестов броска на макете сетки

Comments

    Ничего не найдено.