본문 바로가기
코딩일기/android studio

안드로이드 독학 13일차 : 멀티 터치 이벤트(Multi Touch Event)

by 욱파이어니어 2021. 3. 25.
728x90
반응형

핸드폰을 사용하다 보면 멀티 터치가 일어날 때가 있는데 안드로이드에서는 멀티터치를 어떻게 감지하고 알아내는지

알아보자

 

일단 우리는 터치가 일어날 때 event는 터치가 되는 포인터를 인덱스와 아이디로 해당 포인터를 추적할 수 있다.

 

터치된 이벤트 = 아이디 + 인덱스

이렇게 구성되어 있다고 보면된다.

 

그럼 터치 이벤트에서 발생할 수 있는 event들을 멀티터치 관점에서 다시 보자

 

1. ACTTION_DOWN

화면을 터치하는 첫 번째 포인터에 대하여 발생한다.

첫 번째 포인터는 MotionEvent에서 인덱스 0번에 저장한다.

 

2. ACTION_POINTER_DOWN

첫번째 포인터 이외의 포인터에 대하여 발생된다. 

 

3. ACTION_MOVE

인덱스와는 상관없이 화면을 누르면서 이동할 때 발생된다.

 

4. ACTION_POINTER_UP

마지막 포인터가 아닌 다른 포인터가 화면에서 없어지면 발생된다.

 

5. ACTION_UP

화면에서 떠나는 마지막 포인터에서 발생된다.

 

 

그럼 이제 터치 이벤트에서는 id와 index값을 어떻게 관리하는지 알아보자.

 

우리가 처음 터치를 하게 되면 터치 이벤트에서

id와 index 값을 부여하고 추후에 터치가 추가되면 id와 index값을 이전에 터치된 것에서 1을 더해서 값을 준다.

그리고 터치가 사라지게 되면 index는 이후에 생겨진 포인터가 없어지면 그대로이고 이전에 생긴 포인터가 없어지면

포인터 개수만큼 줄어들고 id는 그대로 유지한다.

그래서 index 값으로 순서는 수정되대 id는 그대로 유지해서 해당 포인터로 접근도 가능한 것이다.

 

설명이 어려울 수도 있는데 그림으로 간단히 보여주겠다.

 

일단 한 화면에 두 가지의 터치가 있다고 치자

터치가 두개!

이때 파란색이 index에서 알 수 있듯이 빨간색보다 먼저 생성되었다.

그럼 파란색 터치에서 손을 떴을 때 index가 어떻게 변하는지 확인해보자.

 

이렇게 idex는 0으로 줄지만 id는 변하지 않는다.

그럼 빨간색에서 손 떼게 되면 어떻게 되는지 보자.

이렇게 이전에 생긴 거는 그냥 그대로 없어진다.

 

자바 소스로 해당 예제를 만들어 볼 생각 인대 이건 내용이 길어질 것 같아 

아래 링크를 통해 확인해보면 될것같다.

wpioneer.tistory.com/35

 

안드로이드 독학 14일차 : 멀티 터치 이벤트(Multi Touch event) 자바소스 예제

이번 예제는 지난번에 글로 설명한 멀티터치 이벤트에서 달라지는 index에 대한 자바 소스 예제를 보여줄 예정이다. 일단 내가 만든것은 터치 이벤트가 이루어질 때마다 로그를 찍는 것이다. 사

wpioneer.tistory.com

 

반응형