티스토리 뷰
[Android] onTouchEvent 에서의 MotionEvent 터치 구분
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
int touch_id = ((action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> 8 );
int actionEvent = action & MotionEvent.ACTION_MASK; // MotionEvent.ACTION_MASK = 0xff
pointerCount = event.getPointerCount();
switch (actionEvent) {
case MotionEvent.ACTION_DOWN: {
}
위와 같이 action 값을 받게 되면 해당 action 값에는 Touch 동작 관련 HEX 값이 들어가게 된다
Integer.toHexString(action) 를 통해 int 값을 HEX 로 출력하면 16진수로 다음과같은 값으로 터치를 구분할 수 있다
0x___
세번째 두번째 첫번째
첫번째 값은 터치의 Up, Down, Move 를 판별 가능하며, 첫번째 터치인경우와 두번째 터치 이후의 터치의 경우 Up 과 Down 구분 값이 다음과 같이 달라진다.
Primary Finger DOWN = 0 Primary Finger UP = 1
non-Primary Finger DOWN = 5 non-Primary Finger UP = 6
All Finger MOVE = 2
두번째 값은 0 이 입력되고 0 이외의 값은 본적이 없다. (나중에 추가로 조사를 해봐야 할듯)
세번째 값은 touch ID 값으로 첫번째 터치인경우 0의 값 두번째 터치인 경우 1의값 세번째 터치인 경우 2의 값이 들어가며 멀티 터치를 지원하는 최대 값까지 입력된다. 한개의 터치가 Release 되는 경우에는 아직 터치상태인 나머지 터치의 action 의 세번째 Hex 값은 첫번째 터치 값인 0부터 다시 차례대로 터치한 상태로 매겨지게 된다. 자세한 사항은 아래 참고의 예를 확인
- 참고 : 첫번째 터치시에 값은 0 두번째 터치시에 값은 1, 세번째 터치시에 값은 2 이다.
이상태에서 터치를 Release 하는 경우에는 해당 터치 ID 의 값이 입력된다.
예를 들면 3번째까지 터치한 상태에서 두번째 터치한 손가락을 Release 하는 경우에는 action의 세번째 Hex 값은 1이된다.
또한 이상태에서 현재 터치한 Count 값은 총 2개이다. 그리고 나머지 첫번째 터치한 action의 세번째 Hex 값은 그대로 0이고 세번째 터치한 action 의 세번째 Hex 값은 기존의 2에서 1로 변경되게 된다.
int action = event.getAction();
int touch_id = ((action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> 8 );
int actionEvent = action & MotionEvent.ACTION_MASK; // MotionEvent.ACTION_MASK = 0xff
'Computer > Android' 카테고리의 다른 글
[Android] Bitmap Resource 파일명으로 가져오기 (0) | 2015.06.08 |
---|---|
[android] 나라별 value 폴더명 (0) | 2015.05.31 |
[Android] 키보드 감추기/보이기 (0) | 2015.04.05 |
[Android] ACTIVITY 전환시 액티비티의 History 관련 설정 (0) | 2015.02.25 |
[Android] Custom Dialog 만들기 (0) | 2015.02.14 |