sábado, 17 de setembro de 2011

Detectar toque na tela

Olá a todos novamente.

Hoje abordaremos como é possível capturar as ações de toque na tela do android.


É muito fácil colocar essa ação em nosso código, basta implementar o método onTouchEvent(MotionEvent event) na tela que desejamos ter tal ação.

Declarado esse método na Activity que deseja ter a ação, ele sempre será chamado quando ocorrer alguma ação de contato na tela do android.

Colocando a mão na massa

No nosso exemplo, iremos demonstrar como é feita a captação de quando o usuário toca a tela, quando o usuário deixa a tela e por último, quando o usuário deixa a tela.

	@Override
	public boolean onTouchEvent(MotionEvent event) {

		// capturando ação do momento.
		int action = event.getAction();

		switch (action) {
		case MotionEvent.ACTION_DOWN:
			Toast.makeText(getApplicationContext(), "Dedo tocou a tela",
					Toast.LENGTH_LONG).show();
			break;
		case MotionEvent.ACTION_MOVE:
			Toast.makeText(getApplicationContext(), "Dedo moveu na tela",
					Toast.LENGTH_LONG).show();
			break;
		case MotionEvent.ACTION_UP:
			Toast.makeText(getApplicationContext(), "Dedo deixou a tela",
					Toast.LENGTH_LONG).show();
			break;
		}

		return super.onTouchEvent(event);
	}
Este método recebe como parâmetro o objeto MotionEvent que é usado para reportar qualquer ação que ocorra na tela, seja através do dedo, caneta, mouse ou trackball.
Este objeto tem o método getAction() que nos retorna qual ação está ocorrendo no momento.

Com o valor que temos na variável action podemos saber qual é o tipo de ação do momento.
No caso, estamos usando o mesmo MotionEvent para sabe se:

  • MotionEvent.ACTION_DOWN - usuário tocou a tela.
  • MotionEvent.ACTION_MOVE - usuário moveu na tela.
  • MotionEvent.ACTION_UP - usuário deixou a tela.

Para demonstrar que a ação capturada foi a programada de fato, é usando o método makeText() da view Toast (para quem não sabe, Toast é uma view utilizada para mensagens curtas. Para mais informações, consulte a API).

Para mais informações, segue alguns links da documentação do Android:
MotionEventohttp://developer.android.com/reference/android/view/MotionEvent.html
Toasthttp://developer.android.com/reference/android/widget/Toast.html

Até a próxima, amigos.

2 comentários:

  1. Excelente! Vou usar este método para monografia

    ResponderExcluir
  2. Eu consigo capturar fora de activitys? ou seja, pegar qualquer toque na tela.

    ResponderExcluir