yapp a.a 2 2 android annotations
DESCRIPTION
YAPP Advanced Android 2주차 두번째 스터디 자료입니다. Android Annotations LibraryTRANSCRIPT
Android AnnotationsLibrary
2013. 7. 25YAPP 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 Annotationshttp://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 .
javadocsourcesandroidannotations-2.7.1.jarandroidannotations-api-2.7.1.jarHOW-TO.txtLICENSE.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 .
@EActivityEnhance Activity 어노테이션
https://github.com/excilys/androidannotations/wiki/Enhance Activities13년 7월 26일 금요일
YAPP Advanced Android Study .
@EActivitypublic 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
@EActivityMainActivity
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);
@ViewByIdButton btnGreetings; // 인사 버튼
멤버 변수 정의 위에 @ViewById
13년 7월 26일 금요일
YAPP Advanced Android Study .
@AfterViews
• @ViewById를 통해 바인딩 한 후에뷰에 추가 작업이 필요할 때
• @EActivity를 함께 쓰는 경우onCreate 메서드가 호출 될 시점에는 @ViewById에 대한 처리가 되기 전이므로NullPointerException이 발생
• 다른 어노테이션이 모두 처리된 후가장 마지막에 수행됨
13년 7월 26일 금요일
YAPP Advanced Android Study .
@AfterViewsvoid 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();
}});
@Clickvoid 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 .
@EActivitypublic 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일 금요일