[Android] 유저 이벤트 처리 정리

Minjun Kim·2023년 8월 19일
0

Android

목록 보기
15/47
post-thumbnail

📝 SeSAC의 'JetPack과 Kotlin을 활용한 Android App 개발' 강좌를 정리한 글 입니다.


  • 유저 이벤트를 처리하기 위한 프로그램 코드가 크게 2가지로 구분된다.
Event Model내용
Hierarchy Event Model원론적 이벤트
Delegation Event ModelOOP 적 이벤트

사실 많이 거론되는 용어는 아니라고 한다. 하지만 이벤트 처리 방법의 구분을 위해 알아두자.

📚 Hierarchy 이벤트 모델

touch Event 혹은 Key Event를 프로그램에서 직접 처리한다.

  • 원론적 이벤트의 경우에는 이벤트가 발생했을 때
    액티비티에 이벤트 콜백 함수만 오버라이드 해주면 된다.
onTouchEvent() : 액티비티를 터치했을 때
onKeyDown() : 키를 눌렀을 때
onKey Up() : 키를 뗀 순간

📚 Delegation 이벤트 모델

View에 바인딩을 걸어 이벤트를 처리한다.

  • 생각해 보면 거의 모든 이벤트가 터치 이벤트이고 이는 터치 이벤트로 처리할 수 있을 것 같다.

❓ 그럼 OOP 적으로 이벤트를 재해석해서 처리했다는 의미가 뭘까?

-> 프로그램의 명료성

❓ 무엇이 명료해야 될까?

Event가 발생한 객체Event 종류 가 명료해야 한다.

  • 이벤트가 발생한 객체를 명료하게 지정하고,
    모든 이벤트를 터치 이벤트로 처리하지 않고 성격에 따라서 이벤트 종류를 구분하여 처리한다.

🧩 예를 들어보자

버튼과 체크박스와 리스트뷰가 있다.
물론 터치 이벤트로 모두 처리할 수 있다. 터치 지점의 좌표를 구하면 된다.

좌표가
버튼의 내부인지, 체크박스의 네모 안 인지, 리스트뷰의 어느 목록인지 구분하면 된다.

하지만 이것은 명료성이 떨어진다.

그래서 어느 객체 에서 이벤트가 발생했는지,
어떤 성격 의 이벤트 처리를 할지 구분하여 명료성을 확보할 수 있다.

📌 이것이 바로 Delegation 이벤트 모델 이다.

좌표를 구하는 것이 아닌 버튼, 체크박스, 리스트뷰를 객체로 바인딩하고,
성격에 따라 이벤트 종류를 구분하여 이벤트 처리를 한다.

버튼을 '클릭했을 때', -> click Event
체크박스의 상태를 '변경했을 때', -> StateChange Event
리스트의 항목을 '선택했을 때' -> ItemClick Event

즉, 이벤트 종류를 좀 더 세분화하여 처리할 수 있는 것이다.

profile
응애 나 아기 뉴비

0개의 댓글