Preciso obter a posição inicial de toque (X, Y), posição de movimento de toque e posição final de toque da tela no Android.
92
@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;
}
Os três casos são para que você possa reagir a diferentes tipos de eventos, neste exemplo, tocar ou arrastar ou levantar o dedo novamente.
Resposta complementar
Dado um
OnTouchListener
definido em alguma vista:
Isso fornece as coordenadas do evento de toque relativas à visualização que possui o ouvinte de toque atribuído a ela. O canto superior esquerdo da visualização é
(0, 0)
. Se você mover o dedo acima da visualização, o resultadoy
será negativo. Se você mover o dedo para a esquerda da visualização, o resultadox
será negativo.Se você quiser as coordenadas relativas ao canto superior esquerdo da tela do dispositivo, use os valores brutos.
Relacionados
fonte
return false
senão consumirá o toque.getRawX()
egetRawY()
deve retornar as coordenadas absolutas da posição de toque em qualquer visualização à qual o ouvinte é adicionado. Mas você está certo, se houver outra visualização em cima dela que retornetrue
, nenhuma visualização inferior será notificada sobre eventos de toque.getX()
egetY()
funciona perfeitamente (não há necessidadegetRawX/Y()
).onInterceptTouchEvent
e retornarfalse
para que o evento seja processado normalmente.fonte
Aqui está o estilo Koltin, uso no meu projeto e funciona muito bem:
fonte