Notice
Recent Posts
Recent Comments
Link
관리 메뉴

설.현.아빠

Chapter 5 ] 입력 (5-1 Event Handler) 이벤트 처리의 다양성. ② 리스너 인터페이스 구현 본문

교재 & 강좌/안드로이드 프로그래밍 정복

Chapter 5 ] 입력 (5-1 Event Handler) 이벤트 처리의 다양성. ② 리스너 인터페이스 구현

설.현.아빠 2011. 3. 9. 10:47



자~~~두번째 방법을 함 보까~~~요게요게 자주 보던 방식...난 이거보단 다른 더 편한 방법을 쓰지만...일단 알아보자.


첫번째 방법인 콜백 메서드 재정의보다 더 범용적이고 간편한 이벤트 처리 방법을 제공하는데 그것이 바로바로바로 리스너(Listener) !!


실제로 많이 사용하고 많이 듣고 많이 공부해야하는 Listener!!!


② 리스너 인터페이스 구현


대표적인 View클래스의 몇가지 Listener와 그에 선언된 Method는 아래와 같다.


 

View.OnTouchListener : boolean onTouch (View v, MotionEvent event)

View.OnKeyListener : boolean onKey (View v, int keyCode, KeyEvent event)

View.OnClickListener : void onClick (View v)

View.OnLongClickListener : boolean onLongClick (View v)

View.OnFocusChangeListener : void onFocusChange (View v, boolean hasFocus)



역시 Touch도 존재 한다. 그니까 머냐...View클래스를 Extends받아서 onTouchEvent를 재정의할 수 도 있으나 범용적으로는

OnTouchListener를 사용한다는 거지.


한가지 생각해 보고 갈건..OnTouchListener는 View클래스의 내부 인터페이스의 한종류 라는 것이다. 요거 빼먹음 섭하고!


머...Listener라는게 특정 이벤트를 처리하는 인터페이스이니까....이게 중요한게 아니고..


이 인터페이스라는 놈에는 onTouch 같은 추상 메서드가 하나씩만 선언되어 있다는것! 인터페이스는 껍데기일 뿐이고 핵심은 메서드!!!


인터페이스는 자체가 이벤트를 받지도 못하고 처리도 못한다. 하는일은...핸들러의 원형이 어떠해야 한다는것을 강제하는일..(그게 머...)


ㅋㅋ 역시 Listener가 나오니 Handler도 나오는구나~Handle알지? 왜왜 왼쪽으로 빙빙 오른쪽으로 빙빙 Handle~~~ --;;;


이벤트랑 리스너 연결시켜주는거...



등록 메서드도 알아야한다. 흠...


 

void setOnTouchListener(View.OnTouchListener  listener)

void setOnKeyListener(View.OnKeyListener  listener)

void setOnClickListener(View.OnClickListener  listener)

void setOnLongClickListener(View.OnLongClickListener  listener)

void setOnFocusListener(View.OnFocusListener  listener)



아니 그럼 등록 메서드가 핸들러라는 거야 머야~~머 등록메서드가 리스너를 등록 시키는거고...등록된 리스너가 이벤트랑 연결되는거고..


그 연결을 핸들러가 한다며...내가 알기로 Handler라는게 Thread에서도 나오는데 딱 Handler라고 선언되어서 사용되는데..여긴 그런것도 없고...


희한하네~~~~~~~~~~~~~~~~~



아싸!!! 알았다^^ 핸들러는 추상 메서드!!! 즉 View.OnTouchListener : boolean onTouch (View v, MotionEvent event) 요 빨간놈


이 추상 메서드니까 핸들러라고 한다. 역시 책을 꼼꼼히 읽어봐야해~~~그리고 인터페이스는 저 핸들러의 형식이 저따구로 생겨야


한다고 강제로 선언해주는 역할이고!! 아....여기선 핸들러라는게 추상적이네...Thread랑 틀려. 머 onTouchHandler라고 좀 해주지...


등록메서드는 리스너를 등록만...연결은 저놈이 한다...





뷰에서 Touch Event가 발생하면 setOnTouchListener 메서드로 등록한 onTouch 핸들러가 호출될 것이다. 나머지는 거의 콜백과 비슷한


느낌이다. ㅋㅋㅋㅋㅋㅋ 이책 웃기네... 결과적으로 이것도 똑같네 라고 생각하고 있었는데...책도 번거롭단다.


어쨋든 클래스를 하나더 생성해야 하는건 마찬가지니까.. 그래서...더 편리한 방법들이 준비되어 있단다...


이제 4개 남았다~~~얼마나 편한 방법들일지...궁금하네.ㅋㅋㅋㅋㅋ



Comments