SlideShare a Scribd company logo
AndroidAnnotations
Event binding
작성자 – 김태희 최종 수정일: 151202
Event binding
오늘 말씀드릴 Event binding은
안드로이드에서 제공하는 Event handling을
쉽고 빠르게 사용할 수 있도록 해 줍니다.
간단하게 OnClickListener와
그 친구들을 생각하시면 됩니다.
Event binding
구성
@TextChange
@AfterTextChange
@BeforeTextChange
@EditorAction
@FocusChange
@CheckedChange
@Touch
@Click
@LongClick
@ItemClick
@ItemLongClick
@ItemSelect
@OptionsItem
@SeekBarProgressChange
@SeekBarTouchStart
@SeekBarTouchStop
본 강에서는 이 중 자주 쓰이는
@Click annotation을 활용한
예제 어플리케이션을 통해
사용법을 익혀보도록 합니다.
@Click
왼쪽과 같은 간단한 버튼들에
이벤트를 등록하는 코드를
생각해 봅시다.
https://github.com/JuranoSaurus/EventbindingSample
@Click
View.OnClickListener
인터페이스를 사용해야 하죠.
구현 예시를 볼까요?
@Click
버튼이 많으므로
여기서는 각각의 익명
클래스를 선언하지
않겠습니다.
이 다음 페이지에 나올
메소드가 onClick()이라는
게 유추되시죠?
@Click
맞습니다.
switch~case 를 통해
분기되도록 하는
일반적인 이벤트
핸들링입니다.
@Click
맞습니다.
switch~case 를 통해
분기되도록 하는
일반적인 이벤트
핸들링입니다.
@Click
이번에는 AA가 적용된 코드를 보시죠.
@Click
가장 달라지는 부분은
핸들러 메소드 하나로
해결한다는 점입니다.
게다가, 버튼에 대한
선언이 없다는 것!
@Click
btnFirst의 예처럼 핸들러
메소드와 리소스 ID를
매칭해줄 수 있습니다.
그런데, 그 밑에는
없네요? 어떤 규칙으로
바인드 되는거죠?
@Click
btnSecond는 리소스
ID와 매칭되는 것입니다.
이와 같이 메소드 이름과
리소스 ID를 같게 하여
암시적으로 바인딩할 수
있습니다.
@Click
이와 같은 기능을
AA에서는
InferringIDFromMethod
Name 이라고 부르고
있습니다!
@ClickQ. 질문! btn_third는
뭐죠? btnThird와는
다른데요?
@Click
A. 리소스 ID에는
snake_case를 주로
사용하고, 메소드
이름에는 camelCase를
주로 사용합니다. 그래서
AA는 snake_case와
camelCase 간에도
자동으로 매칭해 줍니다.
@Click
btnFourthClicked()는
여러분이 예상하시는
것과 같이 btn_fourth와
바인드됩니다.
@Click
@Click 이기 때문에
메소드 뒤에 접미사
Clicked가 붙어도
자동으로 바인드합니다.
@Click
뒤에서 살펴볼 @Touch와
@LongClick도
마찬가지로
~Touched()와
~LongClicked()를
지원하니 참고해 두세요.
@Click
그럼 여기서, btn_fourth와
btn_fourth_clicked 버튼이 있고,
btnFourthClicked() 메소드가 있다면
어떤 버튼이 바인드될까요?
@Click
답은, “정의되지 않으므로 그렇게
사용해서는 안 된다” 입니다.
실제로 바인드되는것은
btn_fourth이지만 이는 예측할 수
없는 결과입니다.
@Click
만능이 아니라는 것에 실망하셨나요?
하지만 명시적인 표현을 사용하는
습관을 가지도록 합시다 ^_^
@Click
다음은 클릭된 View를 인자로
받아오는 방법입니다.
Button의 상위 클래스인 View로
전달이 되니 버튼으로 사용하려면
캐스팅이 필요합니다.
@Click
버튼이 많을 때, 핸들러를 매 ID마다 선언해야
한다면 너무 복잡해질 수 있습니다.
이럴 때, Annotation에 그룹으로 리소스 ID를
여러 개 전달할 수 있습니다.
Annotation에서는 집합을 {중괄호}로 묶어야
한다는 점 기억하세요!
@Click
AA 51라인원본 74라인
@Click
Generate된 부분을 보시죠.
@Click
우리가 작성한
AAClickSampleActivity.java가
다음과 같이 자동 생성된
모습입니다.
왜 판별하기 모호한 이름을
사용하면 안되는지 추측해볼
수 있는 코드입니다.
익숙한 코드죠?
@More
즐거우셨나요? ^_^
제공된 예제 어플리케이션을 통해 다른 annotation의
활용 예시를 만나보실 수 있습니다!
https://github.com/JuranoSaurus/EventbindingSample
다음 편에는 Threading에 관련된 annotation들을
다루도록 하겠습니다.
Thank you

More Related Content

PPTX
Jurano강의 lec2. sample application 둘러보기
PPTX
Jurano강의 lec3 android_annotations_enhanced_components
PPTX
Jurano강의 lec4 android_annotations_application
PPTX
Jurano강의 lec1. AndroidAnnotations 시작하기
PPTX
Jurano강의 lec6 android_annotations_threading
PPTX
Jurano강의 lec7 android_annotations_resource_injection_and_rest_api
PPTX
학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)
PDF
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
Jurano강의 lec2. sample application 둘러보기
Jurano강의 lec3 android_annotations_enhanced_components
Jurano강의 lec4 android_annotations_application
Jurano강의 lec1. AndroidAnnotations 시작하기
Jurano강의 lec6 android_annotations_threading
Jurano강의 lec7 android_annotations_resource_injection_and_rest_api
학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본

Similar to Jurano강의 lec5 android_annotations_event_binding (20)

PDF
RAD Studio 라이브바인딩 이해하기
PPTX
한양대학교 셔틀시스템 셔틀콕 개발기
PDF
외계어 스터디 4/5 Event & Library
PDF
모바일 앱 프로그래밍 2015-2019년 기말시험
PDF
Android Test Recorder & Profiler 구축 이야기
PPTX
Context
PPT
Working Effectively With Legacy Code - xp2005
PDF
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.
PDF
2016 3rd UX 트렌드 리포트_1부
PDF
JavaScript Profiling With The Chrome Developer Tools_SYS4U I&C
PPTX
구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
PPTX
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
PDF
센차 터치2 시작하기 | Devon 2012
PDF
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
PPTX
[124] 하이브리드 앱 개발기 김한솔
PPTX
DEC2010 Track C-2 실버라이트로 시작하는 윈도우폰7의 만남
PDF
나의 첫 윈도우/맥 애플리케이션 개발하기
PDF
안드로이드 개발자를 위한 스위프트
PDF
Fiddler 피들러에 대해 알아보자
PPTX
빅데이터와공공정보 - 최고위과정 특강
RAD Studio 라이브바인딩 이해하기
한양대학교 셔틀시스템 셔틀콕 개발기
외계어 스터디 4/5 Event & Library
모바일 앱 프로그래밍 2015-2019년 기말시험
Android Test Recorder & Profiler 구축 이야기
Context
Working Effectively With Legacy Code - xp2005
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.
2016 3rd UX 트렌드 리포트_1부
JavaScript Profiling With The Chrome Developer Tools_SYS4U I&C
구글 기술을 이용한 모바일 클라우드 애플리케이션 개발
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
센차 터치2 시작하기 | Devon 2012
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
[124] 하이브리드 앱 개발기 김한솔
DEC2010 Track C-2 실버라이트로 시작하는 윈도우폰7의 만남
나의 첫 윈도우/맥 애플리케이션 개발하기
안드로이드 개발자를 위한 스위프트
Fiddler 피들러에 대해 알아보자
빅데이터와공공정보 - 최고위과정 특강
Ad

Jurano강의 lec5 android_annotations_event_binding