![](https://blog.kakaocdn.net/dn/bAuogp/btqAY7jqr9z/RNMjGKgErtK8oRue8cJSWK/img.png)
사용자 이벤트 모델
델리게이션 이벤트 모델 - 뷰 즉, 객체가 클릭되었을 때, 변경되었을 때 등등 처리하기 위한 모델
하이어라키 이벤트 모델 - 어플이 켜져있을 때 사용자 입력을 처리하는 모델
1. 델리게이션 이벤트 모델
뷰.setOn( XXX )Listener(이벤트 함수)
어플을 만들다보면 사용자가 클릭했을때
이벤트를 처리해야 하는 경우가 많이 생기는데요
그럴 때 뷰에다가.setOnXXXListener를 줘서 이벤트를 처리하는 방식입니다.
.setOnClickListener()
.setOnLongClickListener()
.setOnCheckedChangeListener()
.setOnItemClickListener()
.setOnDateSetListener()
.setOnTimeSetListener()
![](https://blog.kakaocdn.net/dn/bTBzmj/btqA0ODDMUX/QpWMCtVwiK1IYHqH3K5zk0/img.png)
이런식으로 직접 객체별로 이벤트 처리를 해줄수도 있고
![](https://blog.kakaocdn.net/dn/cOLO6z/btqAYH6ikto/UmBd6klLjkWZcMPHYr7Iqk/img.png)
클래스에 onClick 메서드를 만든뒤
![](https://blog.kakaocdn.net/dn/bgSGCP/btqAXPKuPtr/qhPFoBzBt9p0s8C4quk1xK/img.png)
이런식으로 연결하여 사용할 수도 있습니다.
이 함수를 사용할 때 중요한 건
![](https://blog.kakaocdn.net/dn/bXMA1W/btqA1AdTZV4/9LAAbI6eKvAoihy9llqNpk/img.png)
클래스에 OnClickListener를 Implements 해줘야 한다는 겁니다.
체크박스같은 CompoundButton들도
![](https://blog.kakaocdn.net/dn/cU2m19/btqA047kf5M/oSoLmXX8OC5UxHBmtpCzgK/img.png)
이런 형식으로 사용해주는데
클래스에 implements CompoundButton.OnCheckedChangeListener를 해줘야합니다.
2. 하이어라키 이벤트 모델
뒤로가기 버튼을 한번 누르면 정말 종료하시겠습니까? 라는 토스트 문구가 뜨고
두 번 누르면 종료되는 기능을 많이 보셨을텐데요
하이어라키 이벤트 모델에는
터치 이벤트, 키 이벤트가 있습니다.
왼쪽으로 밀었을 때, 오른쪽으로 밀었을 때를 판단하는 함수와
종료를 하는 기능을 만들어보겠습니다.
왼쪽으로 밀었을 때, 오른쪽으로 밀었을 때 판단 함수
![](https://blog.kakaocdn.net/dn/co1slu/btqAXRhmN58/sMNw7Cp5U7reaE7PYsIdjk/img.png)
처음 화면이 눌렸을 때 x 포지션을 저장하고, 뗐을 때 포지션의 차이를 통해
왼쪽으로 밀었는지, 오른쪽으로 밀었는지 확인하는 함수입니다.
코드를 파일로 첨부해놓았으니 스튜디오에 넣어서 사용하시면 됩니다.
뒤로가기 두 번 눌렸을 시 종료 기능
![](https://blog.kakaocdn.net/dn/7kTil/btqA04TOcIl/nhvoghyhMAMVFfqo6coq41/img.png)
MainActivity.java의 onCreate 바깥에 작성한 코드입니다.
코드 파일로 첨부해놓았으니 안드로이드 스튜디오에 넣어서 사용하시면 됩니다.
토스트로 보여주는 걸 함수로 만들어서 다른데서도 중복 사용할 수 있게 했습니다.
showToast(보여줄 문장); 하면 토스트를 띄워줍니다.
활용하기 나름이지만 자주 사용하는건 그때그때 만들어서 사용하기보다
제 경험상 이렇게 만들어놓고 복사+붙여넣기 하는게 편하기 때문에 ㅋㅋㅋ
이 부분은 정말 중요한 부분이니까 반복해서 숙달하는게
어플 만들 때 생산성을 정말 많이 높여 줄 수 있습니다 !!!
'슬기로운 개발자생활 > Native APP' 카테고리의 다른 글
[APP 개발] 안드로이드 스튜디오 리소스 관리, 상단 제거, 화면크기 호환 (1) | 2020.01.09 |
---|---|
[APP 개발] 안드로이드 스튜디오 알림 기능 (진동, 벨, 토스트, 알림창) (4) | 2020.01.07 |
[APP 개발] 안드로이드 스튜디오 UI구성 레이아웃 (Layout) (0) | 2020.01.05 |