[APP 개발] 안드로이드 스튜디오 사용자 이벤트 처리 (종료, 좌우스크롤)

사용자 이벤트 모델
델리게이션 이벤트 모델 - 뷰 즉, 객체가 클릭되었을 때, 변경되었을 때 등등 처리하기 위한 모델
하이어라키 이벤트 모델 - 어플이 켜져있을 때 사용자 입력을 처리하는 모델
1. 델리게이션 이벤트 모델
뷰.setOn( XXX )Listener(이벤트 함수)
어플을 만들다보면 사용자가 클릭했을때
이벤트를 처리해야 하는 경우가 많이 생기는데요
그럴 때 뷰에다가.setOnXXXListener를 줘서 이벤트를 처리하는 방식입니다.
.setOnClickListener()
.setOnLongClickListener()
.setOnCheckedChangeListener()
.setOnItemClickListener()
.setOnDateSetListener()
.setOnTimeSetListener()

이런식으로 직접 객체별로 이벤트 처리를 해줄수도 있고

클래스에 onClick 메서드를 만든뒤

이런식으로 연결하여 사용할 수도 있습니다.
이 함수를 사용할 때 중요한 건

클래스에 OnClickListener를 Implements 해줘야 한다는 겁니다.
체크박스같은 CompoundButton들도

이런 형식으로 사용해주는데
클래스에 implements CompoundButton.OnCheckedChangeListener를 해줘야합니다.
2. 하이어라키 이벤트 모델
뒤로가기 버튼을 한번 누르면 정말 종료하시겠습니까? 라는 토스트 문구가 뜨고
두 번 누르면 종료되는 기능을 많이 보셨을텐데요
하이어라키 이벤트 모델에는
터치 이벤트, 키 이벤트가 있습니다.
왼쪽으로 밀었을 때, 오른쪽으로 밀었을 때를 판단하는 함수와
종료를 하는 기능을 만들어보겠습니다.
왼쪽으로 밀었을 때, 오른쪽으로 밀었을 때 판단 함수

처음 화면이 눌렸을 때 x 포지션을 저장하고, 뗐을 때 포지션의 차이를 통해
왼쪽으로 밀었는지, 오른쪽으로 밀었는지 확인하는 함수입니다.
코드를 파일로 첨부해놓았으니 스튜디오에 넣어서 사용하시면 됩니다.
뒤로가기 두 번 눌렸을 시 종료 기능

MainActivity.java의 onCreate 바깥에 작성한 코드입니다.
코드 파일로 첨부해놓았으니 안드로이드 스튜디오에 넣어서 사용하시면 됩니다.
토스트로 보여주는 걸 함수로 만들어서 다른데서도 중복 사용할 수 있게 했습니다.
showToast(보여줄 문장); 하면 토스트를 띄워줍니다.
활용하기 나름이지만 자주 사용하는건 그때그때 만들어서 사용하기보다
제 경험상 이렇게 만들어놓고 복사+붙여넣기 하는게 편하기 때문에 ㅋㅋㅋ
이 부분은 정말 중요한 부분이니까 반복해서 숙달하는게
어플 만들 때 생산성을 정말 많이 높여 줄 수 있습니다 !!!