SlideShare a Scribd company logo
Android Annotations
Library
2013. 7. 25
YAPP 5기 이준영
YAPP Advanced Android Study .
13년 7월 26일 금요일
YAPP Advanced Android Study .
혹시 ‘자료구조’ 수업 들었나요?
13년 7월 26일 금요일
YAPP Advanced Android Study .
링크드리스트,
큐,
스택,
맵,
힙,
정렬....
13년 7월 26일 금요일
YAPP Advanced Android Study .
내가 구현하지 않아도,
사실 누군가가 다 만들어놨습니다.
(그렇다고 몰라도 된다는 건 아니죠)
13년 7월 26일 금요일
YAPP Advanced Android Study .
왜 갑자기 자료구조 얘기냐?
실은...
13년 7월 26일 금요일
YAPP Advanced Android Study .
Android Annotations
http://www.androidannotations.org
13년 7월 26일 금요일
YAPP Advanced Android Study .
13년 7월 26일 금요일
YAPP Advanced Android Study .
107 Lines -> 63 Lines
13년 7월 26일 금요일
YAPP Advanced Android Study .
Android Annotations
Features (1)
• Activities : @EActivity
• View : @ViewById, @AfterViews
• Handling Events : @Click, @LongClick,
@Touch, @ItemClick, @LongItemClick,
@ItemSelect
참고) https://github.com/excilys/androidannotations/wiki/Cookbook
http://www.slideshare.net/realbeast/ss-11639744
13년 7월 26일 금요일
YAPP Advanced Android Study .
Android Annotations
Features (2)
• Application : @App
• Resource : @StringRes, @ColorRes,
@AnimationRes, @BooleanRes,
@ColorStateListRes, ...
• Extras : @Extra
• SystemServices : @systemService
• Injecting Html : @HtmlRes, @FromHtml 등
참고) https://github.com/excilys/androidannotations/wiki/Cookbook
http://www.slideshare.net/realbeast/ss-11639744
13년 7월 26일 금요일
YAPP Advanced Android Study .
안드로이드 프로젝트 생성
13년 7월 26일 금요일
YAPP Advanced Android Study .
13년 7월 26일 금요일
YAPP Advanced Android Study .
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:id="@+id/btnGreetings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="안녕하세요?" />
</RelativeLayout>
id - btnGreetings
13년 7월 26일 금요일
YAPP Advanced Android Study .
MainActivity.java
• ContentView 설정 - onCreate 메서드에서
setContentView(R.layout.activity_main.xml)
• Button (R.id.btnGreetings) 가져오기
• 버튼 클릭하면 토스트 메시지로 “안녕”
• 버튼을 길게 클릭하면
토스트 메시지로 “안~~~~~~~녕”
13년 7월 26일 금요일
YAPP Advanced Android Study .
public class MainActivity extends Activity {
	 Button btnGreetings; // 인사 버튼
	 @Override
	 // 액티비티가 만들어질 때 수행해야 할 작업들
	 protected void onCreate(Bundle savedInstanceState) {
	 	 super.onCreate(savedInstanceState);
	 	 setContentView(R.layout.activity_main);
	 	
	 	 // 뷰 찾아오기
	 	 btnGreetings = (Button)findViewById(R.id.btnGreetings);
	 	 // 뷰에 클릭 이벤트 리스너 설정
	 	 btnGreetings.setOnClickListener(new OnClickListener() {
	 	 	 @Override public void onClick(View v) {
	 	 	 	 // 토스트 메시지 뿌리기
	 	 	 	 Toast.makeText(MainActivity.this, "안녕!?", Toast.LENGTH_SHORT).show();
	 	 	 }
	 	 });
	 	
	 	 // 뷰에 롱클릭 이벤트 리스너 설정
	 	 btnGreetings.setOnLongClickListener(new OnLongClickListener() {
	 	 	 @Override public boolean onLongClick(View v) {
	 	 	 	 Toast.makeText(MainActivity.this, "안~~~~~~~~~녕!?", Toast.LENGTH_SHORT).show();
	 	 	 	 return true;
	 	 	 }
	 	 });
	 }
}
13년 7월 26일 금요일
YAPP Advanced Android Study .
준비
http://www.androidannotations.org
13년 7월 26일 금요일
YAPP Advanced Android Study .
13년 7월 26일 금요일
YAPP Advanced Android Study .
13년 7월 26일 금요일
YAPP Advanced Android Study .
javadoc
sources
androidannotations-2.7.1.jar
androidannotations-api-2.7.1.jar
HOW-TO.txt
LICENSE.txt
압축을 풀어보면...
13년 7월 26일 금요일
YAPP Advanced Android Study .
프로젝트에 폴더 추가
13년 7월 26일 금요일
YAPP Advanced Android Study .
라이브러리 복사
• androidannotations-X.X.X-api.jar
>>> libs 폴더에
• androidannotations-X.X.X.jar
>>> compile-libs 폴더에
• 주의: androidannotations-X.X.X.jar 파일이
libs 폴더에 들어가면 안됨
13년 7월 26일 금요일
YAPP Advanced Android Study .
프로젝트 설정 창 열기
프로젝트 >> Properties
13년 7월 26일 금요일
YAPP Advanced Android Study .
13년 7월 26일 금요일
YAPP Advanced Android Study .
13년 7월 26일 금요일
YAPP Advanced Android Study .
13년 7월 26일 금요일
YAPP Advanced Android Study .
13년 7월 26일 금요일
YAPP Advanced Android Study .
13년 7월 26일 금요일
YAPP Advanced Android Study .
준비 끝!
13년 7월 26일 금요일
YAPP Advanced Android Study .
@EActivity
Enhance Activity 어노테이션
https://github.com/excilys/androidannotations/wiki/Enhance Activities
13년 7월 26일 금요일
YAPP Advanced Android Study .
@EActivity
public class MainActivity extends Activity {
...
13년 7월 26일 금요일
YAPP Advanced Android Study .
착한 Android Annotations
13년 7월 26일 금요일
YAPP Advanced Android Study .
<activity
android:name="yapp.aa.android.MainActivity_"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
android:name=”....MainActivity” 에서
MainActivity_ 언더바 붙이기
13년 7월 26일 금요일
YAPP Advanced Android Study .
Android Annotations 라이브러리는
어노테이션을 Compile 시에 처리하기 때문
※ Annotation Processing Tool
@EActivity
MainActivity
APT
컴파일 시 APT가 @ 처리
MainActivity_
생성
13년 7월 26일 금요일
YAPP Advanced Android Study .
즉, 진짜 사용하는 MainActivity가 아닌
MainActivity_
Intent intent = new Intent(OtherActivity.this, MainActivity_.class);
startActivity(intent);
13년 7월 26일 금요일
YAPP Advanced Android Study .
@ViewById
• findViewById 역할
• @ViewById
- id와 멤버 변수 이름이 같을 때
• @ViewById(R.id.xxx)
- id와 멤버 변수 이름이 다를 때
명시적으로 지정
13년 7월 26일 금요일
YAPP Advanced Android Study .
btnGreetings = (Button)findViewById(R.id.btnGreetings);
@ViewById
Button btnGreetings; // 인사 버튼
멤버 변수 정의 위에 @ViewById
13년 7월 26일 금요일
YAPP Advanced Android Study .
@AfterViews
• @ViewById를 통해 바인딩 한 후에
뷰에 추가 작업이 필요할 때
• @EActivity를 함께 쓰는 경우
onCreate 메서드가 호출 될 시점에는
@ViewById에 대한 처리가 되기 전이므로
NullPointerException이 발생
• 다른 어노테이션이 모두 처리된 후
가장 마지막에 수행됨
13년 7월 26일 금요일
YAPP Advanced Android Study .
@AfterViews
void changeButtonText() {
	 btnGreetings.setText("인사하기");
}
@AfterViews 를 통해
버튼의 레이블 변경
13년 7월 26일 금요일
YAPP Advanced Android Study .
@Click
• View.setOnClickListener() 역할
• 메서드 이름과 멤버 변수의 이름이 같을 때
@Click
• 또는 명시적으로 지정
@Click(R.id.xxx)
• 메서드에 적용하는 어노테이션
• 메서드는 private 이어서는 안됨
13년 7월 26일 금요일
YAPP Advanced Android Study .
// 뷰에 클릭 이벤트 리스너 설정
btnGreetings.setOnClickListener(new OnClickListener() {
	 @Override public void onClick(View v) {
	 	 // 토스트 메시지 뿌리기
	 	 Toast.makeText(MainActivity.this,
"안녕!?",
Toast.LENGTH_SHORT).show();
	 }
});
@Click
void btnGreetings() {
	 Toast.makeText(MainActivity.this,
"안녕!?",
Toast.LENGTH_SHORT).show();
}
13년 7월 26일 금요일
YAPP Advanced Android Study .
@LongClick도...
@LongClick(R.id.btnGreetings)
void longGreetings() {
	 Toast.makeText(MainActivity.this,
"안~~~~~~~~~녕!?",
Toast.LENGTH_SHORT).show();
}
void btnGreetings는 메서드 이름이 중복되므로
void longGreetings 로 하고,
@LongClick(R.id.btnGreetings) 로 작성
13년 7월 26일 금요일
YAPP Advanced Android Study .
onCreate 메서드가 할일은 더 이상 없으니
@EActivity 가 수행하므로
onCreate 삭제
13년 7월 26일 금요일
YAPP Advanced Android Study .
@EActivity
public class MainActivity extends Activity {
	 @ViewById
	 Button btnGreetings; // 인사 버튼
	
	 @AfterViews
	 void changeButtonText() {
	 	 btnGreetings.setText("인사하기");
	 }
	
	 @Click
	 void btnGreetings() {
	 	 Toast.makeText(MainActivity.this, "안녕!?", Toast.LENGTH_SHORT).show();
	 }
	
	 @LongClick(R.id.btnGreetings)
	 void longGreetings() {
	 	 Toast.makeText(MainActivity.this, "안~~~~~~~~~녕!?", Toast.LENGTH_SHORT).show();
	 }
}
13년 7월 26일 금요일
YAPP Advanced Android Study .
Android Annotations 라이브러리를 배워봤습니다.
그렇다면 지금 해야할 일은 뭘까요?
13년 7월 26일 금요일

More Related Content

What's hot (17)

PDF
URQA 삼성 컨퍼런스 발표
YoungSu Son
 
PDF
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
NAVER Engineering
 
PDF
ReactJS | 서버와 클라이어트에서 동시에 사용하는
Taegon Kim
 
PDF
[D2 오픈세미나]5.robolectric 안드로이드 테스팅
NAVER D2
 
PDF
안드로이드 개발자를 위한 스위프트
병한 유
 
PDF
[11]Android DataBinding : 기초에서 고급까지
NAVER Engineering
 
PPTX
GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
Kenneth Ceyer
 
PDF
React 튜토리얼 1차시
태현 김
 
PDF
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.
병대 손
 
PDF
REST API Development with Spring
Keesun Baik
 
PDF
AngularJS 2, version 1 and ReactJS
Kenneth Ceyer
 
PPTX
Angular2를 위한 타입스크립트
Jin wook
 
PPTX
[115] clean fe development_윤지수
NAVER D2
 
PDF
Django를 Django답게, Django로 뉴스 사이트 만들기
Kyoung Up Jung
 
PDF
Spring boot 5장 cli
Choonghyun Yang
 
PDF
[112] 실전 스위프트 프로그래밍
NAVER D2
 
PDF
자바스크립트 프레임워크 살펴보기
Jeado Ko
 
URQA 삼성 컨퍼런스 발표
YoungSu Son
 
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
NAVER Engineering
 
ReactJS | 서버와 클라이어트에서 동시에 사용하는
Taegon Kim
 
[D2 오픈세미나]5.robolectric 안드로이드 테스팅
NAVER D2
 
안드로이드 개발자를 위한 스위프트
병한 유
 
[11]Android DataBinding : 기초에서 고급까지
NAVER Engineering
 
GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
Kenneth Ceyer
 
React 튜토리얼 1차시
태현 김
 
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.
병대 손
 
REST API Development with Spring
Keesun Baik
 
AngularJS 2, version 1 and ReactJS
Kenneth Ceyer
 
Angular2를 위한 타입스크립트
Jin wook
 
[115] clean fe development_윤지수
NAVER D2
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Kyoung Up Jung
 
Spring boot 5장 cli
Choonghyun Yang
 
[112] 실전 스위프트 프로그래밍
NAVER D2
 
자바스크립트 프레임워크 살펴보기
Jeado Ko
 

Similar to Yapp a.a 2 2 android annotations (20)

PPTX
NHNNEXT 고등학생 창의체험 프로그래밍 실습
YoungSu Son
 
PDF
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
Youngbin Han
 
PDF
협업하는 디자이너 - #4 Android
Jinkyou Son
 
PPTX
Java, android 스터티8
Heejun Kim
 
PPTX
Android 기초강좌 애플리캐이션 구조
Sangon Lee
 
PDF
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
창규 김
 
PPTX
2016년 #implude 안드로이드 단기속성 - 3. 데이터를 담아주는 변수 & 자료형 (+스낵바)
Sung Woo Park
 
PPTX
Android 개론
운용 최
 
PDF
[NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)
YoungSu Son
 
PPTX
Java, android 스터티5
Heejun Kim
 
PDF
Modern android
Leonardo YongUk Kim
 
PPTX
Jurano강의 lec4 android_annotations_application
Ju-ri Seo
 
PDF
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
NAVER Engineering
 
PDF
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
Lee Sang-Ho
 
PPTX
2일차 20140402
Jake Yoon
 
PPTX
Java, android 스터티9
Heejun Kim
 
PDF
Xamarin.Android(자마린.안드로이드) HelloWorld2_크로스플랫폼 자마린교육, 자마린을 잡으세요~
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
PPT
안드로이드스터디 1
jangpd007
 
PDF
Naver Campus Hackday Winter 2017 참가 후기
Youngbin Han
 
PDF
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
YoungSu Son
 
NHNNEXT 고등학생 창의체험 프로그래밍 실습
YoungSu Son
 
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
Youngbin Han
 
협업하는 디자이너 - #4 Android
Jinkyou Son
 
Java, android 스터티8
Heejun Kim
 
Android 기초강좌 애플리캐이션 구조
Sangon Lee
 
R.java가 사라졌어요 어떻하죠?:Aquery라이브러리와 안드로이드 개발팁
창규 김
 
2016년 #implude 안드로이드 단기속성 - 3. 데이터를 담아주는 변수 & 자료형 (+스낵바)
Sung Woo Park
 
Android 개론
운용 최
 
[NEXT] Android 개발 경험 프로젝트 2일차 (Intent, ListView, Adapter)
YoungSu Son
 
Java, android 스터티5
Heejun Kim
 
Modern android
Leonardo YongUk Kim
 
Jurano강의 lec4 android_annotations_application
Ju-ri Seo
 
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
NAVER Engineering
 
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
Lee Sang-Ho
 
2일차 20140402
Jake Yoon
 
Java, android 스터티9
Heejun Kim
 
Xamarin.Android(자마린.안드로이드) HelloWorld2_크로스플랫폼 자마린교육, 자마린을 잡으세요~
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
안드로이드스터디 1
jangpd007
 
Naver Campus Hackday Winter 2017 참가 후기
Youngbin Han
 
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
YoungSu Son
 
Ad

More from Junyoung Lee (15)

PDF
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Junyoung Lee
 
PDF
강의 전 준비(GitHub가입, git 클라이언트 설치)
Junyoung Lee
 
PDF
Slideshare font test
Junyoung Lee
 
PDF
Git 더하기 GitHub(구름IDE 환경)
Junyoung Lee
 
PDF
Git 더하기 GitHub 강의 전 준비
Junyoung Lee
 
PDF
웹 IDE 비교
Junyoung Lee
 
PDF
팀프로젝트 활짝 피우기
Junyoung Lee
 
PDF
Tdd with JUnit 1
Junyoung Lee
 
PDF
TDD with JUnit 2
Junyoung Lee
 
PDF
Dropbox 꿀팁
Junyoung Lee
 
PDF
Yapp Advanced Android 3주차 - BaaS.io 이해 및 사용
Junyoung Lee
 
PDF
Yapp a.a 2 2 sugar orm
Junyoung Lee
 
PDF
Yapp a.a study 2 reflection+annotation
Junyoung Lee
 
PPTX
[Yapp aa] 스터디 과제
Junyoung Lee
 
PPTX
Git
Junyoung Lee
 
Git 더하기 GitHub(Git클라이언트 활용) / Getting started with git+github
Junyoung Lee
 
강의 전 준비(GitHub가입, git 클라이언트 설치)
Junyoung Lee
 
Slideshare font test
Junyoung Lee
 
Git 더하기 GitHub(구름IDE 환경)
Junyoung Lee
 
Git 더하기 GitHub 강의 전 준비
Junyoung Lee
 
웹 IDE 비교
Junyoung Lee
 
팀프로젝트 활짝 피우기
Junyoung Lee
 
Tdd with JUnit 1
Junyoung Lee
 
TDD with JUnit 2
Junyoung Lee
 
Dropbox 꿀팁
Junyoung Lee
 
Yapp Advanced Android 3주차 - BaaS.io 이해 및 사용
Junyoung Lee
 
Yapp a.a 2 2 sugar orm
Junyoung Lee
 
Yapp a.a study 2 reflection+annotation
Junyoung Lee
 
[Yapp aa] 스터디 과제
Junyoung Lee
 
Ad

Yapp a.a 2 2 android annotations

  • 1. Android Annotations Library 2013. 7. 25 YAPP 5기 이준영 YAPP Advanced Android Study . 13년 7월 26일 금요일
  • 2. YAPP Advanced Android Study . 혹시 ‘자료구조’ 수업 들었나요? 13년 7월 26일 금요일
  • 3. YAPP Advanced Android Study . 링크드리스트, 큐, 스택, 맵, 힙, 정렬.... 13년 7월 26일 금요일
  • 4. YAPP Advanced Android Study . 내가 구현하지 않아도, 사실 누군가가 다 만들어놨습니다. (그렇다고 몰라도 된다는 건 아니죠) 13년 7월 26일 금요일
  • 5. YAPP Advanced Android Study . 왜 갑자기 자료구조 얘기냐? 실은... 13년 7월 26일 금요일
  • 6. YAPP Advanced Android Study . Android Annotations http://www.androidannotations.org 13년 7월 26일 금요일
  • 7. YAPP Advanced Android Study . 13년 7월 26일 금요일
  • 8. YAPP Advanced Android Study . 107 Lines -> 63 Lines 13년 7월 26일 금요일
  • 9. YAPP Advanced Android Study . Android Annotations Features (1) • Activities : @EActivity • View : @ViewById, @AfterViews • Handling Events : @Click, @LongClick, @Touch, @ItemClick, @LongItemClick, @ItemSelect 참고) https://github.com/excilys/androidannotations/wiki/Cookbook http://www.slideshare.net/realbeast/ss-11639744 13년 7월 26일 금요일
  • 10. YAPP Advanced Android Study . Android Annotations Features (2) • Application : @App • Resource : @StringRes, @ColorRes, @AnimationRes, @BooleanRes, @ColorStateListRes, ... • Extras : @Extra • SystemServices : @systemService • Injecting Html : @HtmlRes, @FromHtml 등 참고) https://github.com/excilys/androidannotations/wiki/Cookbook http://www.slideshare.net/realbeast/ss-11639744 13년 7월 26일 금요일
  • 11. YAPP Advanced Android Study . 안드로이드 프로젝트 생성 13년 7월 26일 금요일
  • 12. YAPP Advanced Android Study . 13년 7월 26일 금요일
  • 13. YAPP Advanced Android Study . activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <Button android:id="@+id/btnGreetings" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="안녕하세요?" /> </RelativeLayout> id - btnGreetings 13년 7월 26일 금요일
  • 14. YAPP Advanced Android Study . MainActivity.java • ContentView 설정 - onCreate 메서드에서 setContentView(R.layout.activity_main.xml) • Button (R.id.btnGreetings) 가져오기 • 버튼 클릭하면 토스트 메시지로 “안녕” • 버튼을 길게 클릭하면 토스트 메시지로 “안~~~~~~~녕” 13년 7월 26일 금요일
  • 15. YAPP Advanced Android Study . public class MainActivity extends Activity { Button btnGreetings; // 인사 버튼 @Override // 액티비티가 만들어질 때 수행해야 할 작업들 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 뷰 찾아오기 btnGreetings = (Button)findViewById(R.id.btnGreetings); // 뷰에 클릭 이벤트 리스너 설정 btnGreetings.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 토스트 메시지 뿌리기 Toast.makeText(MainActivity.this, "안녕!?", Toast.LENGTH_SHORT).show(); } }); // 뷰에 롱클릭 이벤트 리스너 설정 btnGreetings.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { Toast.makeText(MainActivity.this, "안~~~~~~~~~녕!?", Toast.LENGTH_SHORT).show(); return true; } }); } } 13년 7월 26일 금요일
  • 16. YAPP Advanced Android Study . 준비 http://www.androidannotations.org 13년 7월 26일 금요일
  • 17. YAPP Advanced Android Study . 13년 7월 26일 금요일
  • 18. YAPP Advanced Android Study . 13년 7월 26일 금요일
  • 19. YAPP Advanced Android Study . javadoc sources androidannotations-2.7.1.jar androidannotations-api-2.7.1.jar HOW-TO.txt LICENSE.txt 압축을 풀어보면... 13년 7월 26일 금요일
  • 20. YAPP Advanced Android Study . 프로젝트에 폴더 추가 13년 7월 26일 금요일
  • 21. YAPP Advanced Android Study . 라이브러리 복사 • androidannotations-X.X.X-api.jar >>> libs 폴더에 • androidannotations-X.X.X.jar >>> compile-libs 폴더에 • 주의: androidannotations-X.X.X.jar 파일이 libs 폴더에 들어가면 안됨 13년 7월 26일 금요일
  • 22. YAPP Advanced Android Study . 프로젝트 설정 창 열기 프로젝트 >> Properties 13년 7월 26일 금요일
  • 23. YAPP Advanced Android Study . 13년 7월 26일 금요일
  • 24. YAPP Advanced Android Study . 13년 7월 26일 금요일
  • 25. YAPP Advanced Android Study . 13년 7월 26일 금요일
  • 26. YAPP Advanced Android Study . 13년 7월 26일 금요일
  • 27. YAPP Advanced Android Study . 13년 7월 26일 금요일
  • 28. YAPP Advanced Android Study . 준비 끝! 13년 7월 26일 금요일
  • 29. YAPP Advanced Android Study . @EActivity Enhance Activity 어노테이션 https://github.com/excilys/androidannotations/wiki/Enhance Activities 13년 7월 26일 금요일
  • 30. YAPP Advanced Android Study . @EActivity public class MainActivity extends Activity { ... 13년 7월 26일 금요일
  • 31. YAPP Advanced Android Study . 착한 Android Annotations 13년 7월 26일 금요일
  • 32. YAPP Advanced Android Study . <activity android:name="yapp.aa.android.MainActivity_" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> android:name=”....MainActivity” 에서 MainActivity_ 언더바 붙이기 13년 7월 26일 금요일
  • 33. YAPP Advanced Android Study . Android Annotations 라이브러리는 어노테이션을 Compile 시에 처리하기 때문 ※ Annotation Processing Tool @EActivity MainActivity APT 컴파일 시 APT가 @ 처리 MainActivity_ 생성 13년 7월 26일 금요일
  • 34. YAPP Advanced Android Study . 즉, 진짜 사용하는 MainActivity가 아닌 MainActivity_ Intent intent = new Intent(OtherActivity.this, MainActivity_.class); startActivity(intent); 13년 7월 26일 금요일
  • 35. YAPP Advanced Android Study . @ViewById • findViewById 역할 • @ViewById - id와 멤버 변수 이름이 같을 때 • @ViewById(R.id.xxx) - id와 멤버 변수 이름이 다를 때 명시적으로 지정 13년 7월 26일 금요일
  • 36. YAPP Advanced Android Study . btnGreetings = (Button)findViewById(R.id.btnGreetings); @ViewById Button btnGreetings; // 인사 버튼 멤버 변수 정의 위에 @ViewById 13년 7월 26일 금요일
  • 37. YAPP Advanced Android Study . @AfterViews • @ViewById를 통해 바인딩 한 후에 뷰에 추가 작업이 필요할 때 • @EActivity를 함께 쓰는 경우 onCreate 메서드가 호출 될 시점에는 @ViewById에 대한 처리가 되기 전이므로 NullPointerException이 발생 • 다른 어노테이션이 모두 처리된 후 가장 마지막에 수행됨 13년 7월 26일 금요일
  • 38. YAPP Advanced Android Study . @AfterViews void changeButtonText() { btnGreetings.setText("인사하기"); } @AfterViews 를 통해 버튼의 레이블 변경 13년 7월 26일 금요일
  • 39. YAPP Advanced Android Study . @Click • View.setOnClickListener() 역할 • 메서드 이름과 멤버 변수의 이름이 같을 때 @Click • 또는 명시적으로 지정 @Click(R.id.xxx) • 메서드에 적용하는 어노테이션 • 메서드는 private 이어서는 안됨 13년 7월 26일 금요일
  • 40. YAPP Advanced Android Study . // 뷰에 클릭 이벤트 리스너 설정 btnGreetings.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 토스트 메시지 뿌리기 Toast.makeText(MainActivity.this, "안녕!?", Toast.LENGTH_SHORT).show(); } }); @Click void btnGreetings() { Toast.makeText(MainActivity.this, "안녕!?", Toast.LENGTH_SHORT).show(); } 13년 7월 26일 금요일
  • 41. YAPP Advanced Android Study . @LongClick도... @LongClick(R.id.btnGreetings) void longGreetings() { Toast.makeText(MainActivity.this, "안~~~~~~~~~녕!?", Toast.LENGTH_SHORT).show(); } void btnGreetings는 메서드 이름이 중복되므로 void longGreetings 로 하고, @LongClick(R.id.btnGreetings) 로 작성 13년 7월 26일 금요일
  • 42. YAPP Advanced Android Study . onCreate 메서드가 할일은 더 이상 없으니 @EActivity 가 수행하므로 onCreate 삭제 13년 7월 26일 금요일
  • 43. YAPP Advanced Android Study . @EActivity public class MainActivity extends Activity { @ViewById Button btnGreetings; // 인사 버튼 @AfterViews void changeButtonText() { btnGreetings.setText("인사하기"); } @Click void btnGreetings() { Toast.makeText(MainActivity.this, "안녕!?", Toast.LENGTH_SHORT).show(); } @LongClick(R.id.btnGreetings) void longGreetings() { Toast.makeText(MainActivity.this, "안~~~~~~~~~녕!?", Toast.LENGTH_SHORT).show(); } } 13년 7월 26일 금요일
  • 44. YAPP Advanced Android Study . Android Annotations 라이브러리를 배워봤습니다. 그렇다면 지금 해야할 일은 뭘까요? 13년 7월 26일 금요일