핸드폰을 사용하다 보면 멀티 터치가 일어날 때가 있는데 안드로이드에서는 멀티터치를 어떻게 감지하고 알아내는지
알아보자
일단 우리는 터치가 일어날 때 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는 변하지 않는다.
그럼 빨간색에서 손 떼게 되면 어떻게 되는지 보자.
이렇게 이전에 생긴 거는 그냥 그대로 없어진다.
자바 소스로 해당 예제를 만들어 볼 생각 인대 이건 내용이 길어질 것 같아
아래 링크를 통해 확인해보면 될것같다.
'코딩일기 > android studio' 카테고리의 다른 글
안드로이드 독학 14일차 : 옵션 메뉴 생성하기(xml 편) (0) | 2021.03.29 |
---|---|
안드로이드 독학 14일차 : 멀티 터치 이벤트(Multi Touch event) 자바소스 예제 (0) | 2021.03.29 |
안드로이드 독학 12일차 : 터치로 그림그리기 (0) | 2021.03.25 |
안드로이드 독학 11일차 : 터치 이벤트(Touch Event) (0) | 2021.03.24 |
Android 독학 10일차 : 커스텀 뷰(Custom View) 만들기 (0) | 2021.03.18 |