[안드로이드] 뷰의 터치 리스너 함수 : OnTouchListener 예제

코드 작성 중 간단한 예제를 저장해둡니다.

뷰의 터치가 되고 있는지 안 되고 있는지에 따라 동작하는 터치 리스너


[OnTouchListener]

구현

private View.OnTouchListener touchListener = new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {

            switch (event.getAction()) {

                // if pressed
                case MotionEvent.ACTION_DOWN: {

            /* 터치하고 있는 상태 */

                    break;
                }

                // if released
                case MotionEvent.ACTION_CANCEL:
                case MotionEvent.ACTION_UP: {

            /* 터치가 안 되고 있는 상태 */

                    break;
                }

                default: {
                    break;
                }
            }

            return false; // false : 이 OnTouchListener 이후에도
                          //         다른 Listener들이 동작하게 함
                          //         (OnClickListener 등등)
        }
    };

예제 소스 다운받기

위에서 MotionEvent.ACTION_CANCEL 이걸 빼먹는 예제들이 있어서 뻘 고생 좀 했는데..
저 ACTION_CANCEL 을 추가해야 단순히 뷰 위에서만 터치가 떨어지는 것 뿐만이 아니라(ACTION_UP), 터치하던 중 드래그같은 동작으로 뷰 범위를 벗어나거나 하는 ‘터치 취소’의 경우(즉 우리가 인식하는 터치가 취소되었다 하는 모든 경우)도 모두 잡아내더군요.


부착

(리스너를 부착할 뷰 인스턴스).setOnTouchListener(touchListener);

이후 터치가 될 때마다 동작이 됩니다.

 

Reply