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
•...
YAPP Advanced Android Study .
Android Annotations
Features (2)
• Application : @App
• Resource : @StringRes, @ColorRes,
@A...
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"...
YAPP Advanced Android Study .
MainActivity.java
• ContentView 설정 - onCreate 메서드에서
setContentView(R.layout.activity_main.xm...
YAPP Advanced Android Study .
public class MainActivity extends Activity {
	 Button btnGreetings; // 인사 버튼
	 @Override
	 /...
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
LIC...
YAPP Advanced Android Study .
프로젝트에 폴더 추가
13년 7월 26일 금요일
YAPP Advanced Android Study .
라이브러리 복사
• androidannotations-X.X.X-api.jar
>>> libs 폴더에
• androidannotations-X.X.X.jar
>>> ...
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...
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" >
<i...
YAPP Advanced Android Study .
Android Annotations 라이브러리는
어노테이션을 Compile 시에 처리하기 때문
※ Annotation Processing Tool
@EActivity...
YAPP Advanced Android Study .
즉, 진짜 사용하는 MainActivity가 아닌
MainActivity_
Intent intent = new Intent(OtherActivity.this, Mai...
YAPP Advanced Android Study .
@ViewById
• findViewById 역할
• @ViewById
- id와 멤버 변수 이름이 같을 때
• @ViewById(R.id.xxx)
- id와 멤버 변...
YAPP Advanced Android Study .
btnGreetings = (Button)findViewById(R.id.btnGreetings);
@ViewById
Button btnGreetings; // 인사...
YAPP Advanced Android Study .
@AfterViews
• @ViewById를 통해 바인딩 한 후에
뷰에 추가 작업이 필요할 때
• @EActivity를 함께 쓰는 경우
onCreate 메서드가 호출...
YAPP Advanced Android Study .
@AfterViews
void changeButtonText() {
	 btnGreetings.setText("인사하기");
}
@AfterViews 를 통해
버튼의...
YAPP Advanced Android Study .
@Click
• View.setOnClickListener() 역할
• 메서드 이름과 멤버 변수의 이름이 같을 때
@Click
• 또는 명시적으로 지정
@Click(...
YAPP Advanced Android Study .
// 뷰에 클릭 이벤트 리스너 설정
btnGreetings.setOnClickListener(new OnClickListener() {
	 @Override publ...
YAPP Advanced Android Study .
@LongClick도...
@LongClick(R.id.btnGreetings)
void longGreetings() {
	 Toast.makeText(MainAct...
YAPP Advanced Android Study .
onCreate 메서드가 할일은 더 이상 없으니
@EActivity 가 수행하므로
onCreate 삭제
13년 7월 26일 금요일
YAPP Advanced Android Study .
@EActivity
public class MainActivity extends Activity {
	 @ViewById
	 Button btnGreetings; /...
YAPP Advanced Android Study .
Android Annotations 라이브러리를 배워봤습니다.
그렇다면 지금 해야할 일은 뭘까요?
13년 7월 26일 금요일
Upcoming SlideShare
Loading in …5
×

Yapp a.a 2 2 android annotations

1,490 views

Published on

YAPP Advanced Android 2주차 두번째 스터디 자료입니다.
Android Annotations Library

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,490
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Yapp a.a 2 2 android annotations

  1. 1. Android Annotations Library 2013. 7. 25 YAPP 5기 이준영 YAPP Advanced Android Study . 13년 7월 26일 금요일
  2. 2. YAPP Advanced Android Study . 혹시 ‘자료구조’ 수업 들었나요? 13년 7월 26일 금요일
  3. 3. YAPP Advanced Android Study . 링크드리스트, 큐, 스택, 맵, 힙, 정렬.... 13년 7월 26일 금요일
  4. 4. YAPP Advanced Android Study . 내가 구현하지 않아도, 사실 누군가가 다 만들어놨습니다. (그렇다고 몰라도 된다는 건 아니죠) 13년 7월 26일 금요일
  5. 5. YAPP Advanced Android Study . 왜 갑자기 자료구조 얘기냐? 실은... 13년 7월 26일 금요일
  6. 6. YAPP Advanced Android Study . Android Annotations http://www.androidannotations.org 13년 7월 26일 금요일
  7. 7. YAPP Advanced Android Study . 13년 7월 26일 금요일
  8. 8. YAPP Advanced Android Study . 107 Lines -> 63 Lines 13년 7월 26일 금요일
  9. 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. 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. 11. YAPP Advanced Android Study . 안드로이드 프로젝트 생성 13년 7월 26일 금요일
  12. 12. YAPP Advanced Android Study . 13년 7월 26일 금요일
  13. 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. 14. YAPP Advanced Android Study . MainActivity.java • ContentView 설정 - onCreate 메서드에서 setContentView(R.layout.activity_main.xml) • Button (R.id.btnGreetings) 가져오기 • 버튼 클릭하면 토스트 메시지로 “안녕” • 버튼을 길게 클릭하면 토스트 메시지로 “안~~~~~~~녕” 13년 7월 26일 금요일
  15. 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. 16. YAPP Advanced Android Study . 준비 http://www.androidannotations.org 13년 7월 26일 금요일
  17. 17. YAPP Advanced Android Study . 13년 7월 26일 금요일
  18. 18. YAPP Advanced Android Study . 13년 7월 26일 금요일
  19. 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. 20. YAPP Advanced Android Study . 프로젝트에 폴더 추가 13년 7월 26일 금요일
  21. 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. 22. YAPP Advanced Android Study . 프로젝트 설정 창 열기 프로젝트 >> Properties 13년 7월 26일 금요일
  23. 23. YAPP Advanced Android Study . 13년 7월 26일 금요일
  24. 24. YAPP Advanced Android Study . 13년 7월 26일 금요일
  25. 25. YAPP Advanced Android Study . 13년 7월 26일 금요일
  26. 26. YAPP Advanced Android Study . 13년 7월 26일 금요일
  27. 27. YAPP Advanced Android Study . 13년 7월 26일 금요일
  28. 28. YAPP Advanced Android Study . 준비 끝! 13년 7월 26일 금요일
  29. 29. YAPP Advanced Android Study . @EActivity Enhance Activity 어노테이션 https://github.com/excilys/androidannotations/wiki/Enhance Activities 13년 7월 26일 금요일
  30. 30. YAPP Advanced Android Study . @EActivity public class MainActivity extends Activity { ... 13년 7월 26일 금요일
  31. 31. YAPP Advanced Android Study . 착한 Android Annotations 13년 7월 26일 금요일
  32. 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. 33. YAPP Advanced Android Study . Android Annotations 라이브러리는 어노테이션을 Compile 시에 처리하기 때문 ※ Annotation Processing Tool @EActivity MainActivity APT 컴파일 시 APT가 @ 처리 MainActivity_ 생성 13년 7월 26일 금요일
  34. 34. YAPP Advanced Android Study . 즉, 진짜 사용하는 MainActivity가 아닌 MainActivity_ Intent intent = new Intent(OtherActivity.this, MainActivity_.class); startActivity(intent); 13년 7월 26일 금요일
  35. 35. YAPP Advanced Android Study . @ViewById • findViewById 역할 • @ViewById - id와 멤버 변수 이름이 같을 때 • @ViewById(R.id.xxx) - id와 멤버 변수 이름이 다를 때 명시적으로 지정 13년 7월 26일 금요일
  36. 36. YAPP Advanced Android Study . btnGreetings = (Button)findViewById(R.id.btnGreetings); @ViewById Button btnGreetings; // 인사 버튼 멤버 변수 정의 위에 @ViewById 13년 7월 26일 금요일
  37. 37. YAPP Advanced Android Study . @AfterViews • @ViewById를 통해 바인딩 한 후에 뷰에 추가 작업이 필요할 때 • @EActivity를 함께 쓰는 경우 onCreate 메서드가 호출 될 시점에는 @ViewById에 대한 처리가 되기 전이므로 NullPointerException이 발생 • 다른 어노테이션이 모두 처리된 후 가장 마지막에 수행됨 13년 7월 26일 금요일
  38. 38. YAPP Advanced Android Study . @AfterViews void changeButtonText() { btnGreetings.setText("인사하기"); } @AfterViews 를 통해 버튼의 레이블 변경 13년 7월 26일 금요일
  39. 39. YAPP Advanced Android Study . @Click • View.setOnClickListener() 역할 • 메서드 이름과 멤버 변수의 이름이 같을 때 @Click • 또는 명시적으로 지정 @Click(R.id.xxx) • 메서드에 적용하는 어노테이션 • 메서드는 private 이어서는 안됨 13년 7월 26일 금요일
  40. 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. 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. 42. YAPP Advanced Android Study . onCreate 메서드가 할일은 더 이상 없으니 @EActivity 가 수행하므로 onCreate 삭제 13년 7월 26일 금요일
  43. 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. 44. YAPP Advanced Android Study . Android Annotations 라이브러리를 배워봤습니다. 그렇다면 지금 해야할 일은 뭘까요? 13년 7월 26일 금요일

×