Мне нужно получить начальную позицию касания (X, Y), коснуться позиции перемещения и коснуться конечной позиции экрана в андроиде.
Как получить положение Touch в андроиде?
Ответ 1
@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;
}
Три случая таковы, что вы можете реагировать на различные типы событий, в этом примере, снова нажав или перетащив или подняв палец.
Ответ 2
Дополнительный ответ
Учитывая 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();
связанные с
Ответ 3
@Override
public boolean onTouch(View v, MotionEvent event) {
float x = event.getX();
float y = event.getY();
return true;
}
Ответ 4
Вы можете реализовать дедуктор Gesture, и в своем onfling-событии вы получите два параметра из класса MotionEvent. Вы можете получить от них координаты x и y. Обратите внимание на это сообщение для более подробной информации
Ответ 5
Вот стиль Колтина, я использую его в своем проекте, и он работает очень хорошо:
this.yourview.setOnTouchListener(View.OnTouchListener { _, event ->
val x = event.x
val y = event.y
when(event.action) {
MotionEvent.ACTION_DOWN -> {
Log.d(TAG, "ACTION_DOWN \nx: $x\ny: $y")
}
MotionEvent.ACTION_MOVE -> {
Log.d(TAG, "ACTION_MOVE \nx: $x\ny: $y")
}
MotionEvent.ACTION_UP -> {
Log.d(TAG, "ACTION_UP \nx: $x\ny: $y")
}
}
[email protected] true
})