SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
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일 금요일

Contenu connexe

Tendances

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

Tendances (17)

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

Similaire à Yapp a.a 2 2 android annotations

Frends meetup 2013.07
Frends meetup 2013.07Frends meetup 2013.07
Frends meetup 2013.07Nanha Park
 
Yapp a.a 2 2 sugar orm
Yapp a.a 2 2 sugar ormYapp a.a 2 2 sugar orm
Yapp a.a 2 2 sugar ormJunyoung Lee
 
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)JinKwon Lee
 
RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작
RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작
RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작r-kor
 
Shiny의 또 다른 활용
Shiny의 또 다른 활용Shiny의 또 다른 활용
Shiny의 또 다른 활용건웅 문
 
안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd week안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd weekEunGi Hong
 
유니티와 안드로이드의 연동
유니티와  안드로이드의 연동유니티와  안드로이드의 연동
유니티와 안드로이드의 연동현욱 김
 
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디Youngbin Han
 

Similaire à Yapp a.a 2 2 android annotations (10)

Frends meetup 2013.07
Frends meetup 2013.07Frends meetup 2013.07
Frends meetup 2013.07
 
Open Source Startup
Open Source StartupOpen Source Startup
Open Source Startup
 
Yapp a.a 2 2 sugar orm
Yapp a.a 2 2 sugar ormYapp a.a 2 2 sugar orm
Yapp a.a 2 2 sugar orm
 
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
HTML5로 만드는 데스크탑 어플리케이션 (Node-Webkit)
 
RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작
RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작
RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작
 
Shiny의 또 다른 활용
Shiny의 또 다른 활용Shiny의 또 다른 활용
Shiny의 또 다른 활용
 
안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd week안드로이드 개발하기 2nd week
안드로이드 개발하기 2nd week
 
유니티와 안드로이드의 연동
유니티와  안드로이드의 연동유니티와  안드로이드의 연동
유니티와 안드로이드의 연동
 
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
1.Create Project Sunshine - 시온고등학교 안드로이드 스터디
 
Modern android
Modern androidModern android
Modern android
 

Plus de Junyoung Lee

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

Plus de Junyoung Lee (14)

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

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일 금요일