SlideShare a Scribd company logo
1 of 28
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

Similar to Jurano강의 lec5 android_annotations_event_binding

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

Similar to Jurano강의 lec5 android_annotations_event_binding (20)

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

Jurano강의 lec5 android_annotations_event_binding