SlideShare a Scribd company logo
1 of 26
AndroidAnnotations
Resource Injection + Rest API
작성자 - 서주리
UI 개요
안드로이드에서
사용자 인터페이스(UI)는
뷰(View)와 뷰 그룹(View Group)객체를 사용하여 만들어짐
모든 뷰와 뷰 그룹은 뷰 클래스의 하위클래스가됨
뷰(View) 객체는 UI를 구성하는 기본 단위!
View와 ViewGroup
ViewGroup 클래스
"레이아웃(layout)"
하위 클래스의 기반이 됨.
레이아웃을 이용하여
화면 배치를 다양하게 만들 수 있음
View 클래스
"위젯(widget)"
하위 클래스들의 기반이 됨
View 객체
레이아웃 매개변수나
화면의 특정 사각 영역에 대한
정보를 담고 있는 자료 구조.
사용자 인터페이스 객체로서
사용자와 상호작용을 위한 창구
및 이벤트 리스너(listener) 역할을 함.
View 계층 구조
액티비티의 화면에
표시하기 위해서는
액티비티에서
setContentView() 메소드를
호출하면서, 뷰 계층 구조의
루트 노드 객체에
대한 참조를 파라미터로
전달하면 된다.
계층구조 최상위에서부터
순서대로 레이아웃 앨리먼트를 분석해서
뷰 들을 인스턴스화 하며,
그것들을 부모에 추가한다.
순서대로 그려지기 때문에 위치가 겹치는 앨리먼트는 마지막에
그려진 것이
이전에 그려진것보다 위에 놓이게 된다.
Layout
Activity나 Widget의 UI
XML을 이용하여 화면구성
자바 코드를 통해 화면구성
Layout
XML 리소스를 로드 할 경우
Layout
Layout 파라미터
layout_something으로 이름이 지어진 XML 레이아웃 속성은
뷰에 대한 레이아웃 파라미터를 정의한다!
Layout
레이아웃 종류 - LinearLayout
가장 기본적이면서
가장 많이 사용하는 레이아웃.
레이아웃의 요소들을
수직, 수평으로 배치한다.
Layout
레이아웃 종류 – RelativeLayout
레이아웃 요소들 간에 위치관계를 부여하고 그 관계에 따라 화면을 구성.
Layout
레이아웃 종류 - FrameLayout
가장 단순한 레이아웃
각 요소들을 모두 왼쪽 상단을 기준으로 포개는 방식으로 배치 됨.
두개의 화면을 붙여놓고 필요에 따라 스위칭 할 때 주로 사용(예, Tab)
Layout
레이아웃 종류 - TableLayout
일정한 선에 맞추어 정렬되어야 하는 요소를
정렬 할 때 주로 사용
TableLayout이 전체적인 테이블 구조의 모양을 관리하고,
각 행에는 TableRow가 하나씩 들어가며
실제 위젯은 각 행의 TableRow안에 들어감.
Layout
동일하게 annotation을 사용하면
injection 된다!
String
동일하게 annotation을 사용하면
injection 된다!
Color
동일하게 annotation을 사용하면
injection 된다!
Animation
동일하게 annotation을 사용하면
injection 된다!
이외의 Resource
@BooleanRes
@ColorStateListRes
@DrawableRes
@IntArrayRes
@IntegerRes
@MovieRes
@TextRes
@TextArrayRes
@StringArrayRes
모두 동일하게
사용하면 된다
^_^
Rest API
구성
@Rest
@RestService
@Get
@Post
@Put
@Patch
@Delete
@Options
@Head
@Accept
@RequiresHeader
@RequiresCookie
...
예제 어플리케이션을 통해
Rest 방식으로 구성된 서버와
간단히 통신하는 법을 알아보도록 하겠습니다.
Rest API
앞선 예제들과 다르게 spring android와
사용하는 Mapper가 별도로 필요합니다.
저는 Gradle에 다음을 추가하였습니다.
(곧 릴리즈 예정인 4.0부터는
해당 파트의 구조가 바뀌니 참고하세요)
Rest API
참고: 사용하는 라이브러리에 따라
다음 옵션이 필요할 수도 있습니다.
Rest API
다음과 같이 프로젝트를 구성하였습니다.
AAMainActivity: UI를 구현한 화면 및 기능수행
AARestProtocol: Rest 요청 행동이 정의된 인터페이스
Message: 데이터를 담아 통신하기 위한 객체
(코드는 이곳에서!) https://github.com/JuranoSaurus/RestAPISample
Rest API
요청으로 메시지를 보내고, 응답으로 echo
메시지를 받는 서버를 구성하였습니다.
@Background에서 별도의 스레드로
통신을 요청하고, 응답이 올 때까지 해당
스레드를 자동으로 block 합니다.
어디로 어떻게 요청을 보낼 건지는 다음
Interface에 행동을 정의만 해주면 됩니다!
(이렇게 쉬울수가...)
Message 객체의 구조는 다음과
같습니다.
Message 객체의 구조는 다음과
같습니다.
실행 결과입니다.
서버가 정상적으로 “Hello”를
전송해주는 것을 확인할 수 있습니다.
Thank you

More Related Content

Similar to Jurano강의 lec7 android_annotations_resource_injection_and_rest_api

Android Programming - AdapterView
Android Programming - AdapterViewAndroid Programming - AdapterView
Android Programming - AdapterViewJake Yoon
 
안드로이드스터디 5
안드로이드스터디 5안드로이드스터디 5
안드로이드스터디 5jangpd007
 
iOS Human Interface Guidlines #14_SYS4U
iOS Human Interface Guidlines #14_SYS4UiOS Human Interface Guidlines #14_SYS4U
iOS Human Interface Guidlines #14_SYS4Usys4u
 
자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃
자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃
자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃Dongsik Yang
 
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본Lee Sang-Ho
 
iOS Human Interface Guidlines #13_SYS4U
iOS Human Interface Guidlines #13_SYS4UiOS Human Interface Guidlines #13_SYS4U
iOS Human Interface Guidlines #13_SYS4Usys4u
 
Android Study Summary 2-1
Android Study Summary 2-1Android Study Summary 2-1
Android Study Summary 2-1Seonmun Choi
 
Viewpager를활용한app만들기
Viewpager를활용한app만들기Viewpager를활용한app만들기
Viewpager를활용한app만들기DaeHee Jang
 
[NEXT] Android 개발 경험 프로젝트 1일차 (Widget, Linear Layout)
[NEXT] Android  개발 경험 프로젝트 1일차 (Widget, Linear Layout) [NEXT] Android  개발 경험 프로젝트 1일차 (Widget, Linear Layout)
[NEXT] Android 개발 경험 프로젝트 1일차 (Widget, Linear Layout) YoungSu Son
 
Java, android 스터티7
Java, android 스터티7Java, android 스터티7
Java, android 스터티7Heejun Kim
 
17 adapter view & db
17 adapter view & db17 adapter view & db
17 adapter view & db운용 최
 
Holub on-patterns-2-1
Holub on-patterns-2-1Holub on-patterns-2-1
Holub on-patterns-2-1정환 임
 
HolubOnPatterns/chapter2_1
HolubOnPatterns/chapter2_1HolubOnPatterns/chapter2_1
HolubOnPatterns/chapter2_1정환 임
 
[스프링 스터디 3일차] AOP와 LTW
[스프링 스터디 3일차] AOP와 LTW[스프링 스터디 3일차] AOP와 LTW
[스프링 스터디 3일차] AOP와 LTWAnselmKim
 
컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기우영 주
 
모바일 앱 프로그래밍 2015-2019년 출석수업대체시험
모바일 앱 프로그래밍 2015-2019년 출석수업대체시험모바일 앱 프로그래밍 2015-2019년 출석수업대체시험
모바일 앱 프로그래밍 2015-2019년 출석수업대체시험Lee Sang-Ho
 

Similar to Jurano강의 lec7 android_annotations_resource_injection_and_rest_api (20)

Android Programming - AdapterView
Android Programming - AdapterViewAndroid Programming - AdapterView
Android Programming - AdapterView
 
안드로이드스터디 5
안드로이드스터디 5안드로이드스터디 5
안드로이드스터디 5
 
iOS Human Interface Guidlines #14_SYS4U
iOS Human Interface Guidlines #14_SYS4UiOS Human Interface Guidlines #14_SYS4U
iOS Human Interface Guidlines #14_SYS4U
 
iOS-3
iOS-3iOS-3
iOS-3
 
자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃
자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃
자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃
 
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 모바일 앱 프로그래밍 기말평가 제출본
 
Django View Part 1
Django View Part 1Django View Part 1
Django View Part 1
 
iOS Human Interface Guidlines #13_SYS4U
iOS Human Interface Guidlines #13_SYS4UiOS Human Interface Guidlines #13_SYS4U
iOS Human Interface Guidlines #13_SYS4U
 
Android Study Summary 2-1
Android Study Summary 2-1Android Study Summary 2-1
Android Study Summary 2-1
 
Viewpager를활용한app만들기
Viewpager를활용한app만들기Viewpager를활용한app만들기
Viewpager를활용한app만들기
 
[NEXT] Android 개발 경험 프로젝트 1일차 (Widget, Linear Layout)
[NEXT] Android  개발 경험 프로젝트 1일차 (Widget, Linear Layout) [NEXT] Android  개발 경험 프로젝트 1일차 (Widget, Linear Layout)
[NEXT] Android 개발 경험 프로젝트 1일차 (Widget, Linear Layout)
 
Java, android 스터티7
Java, android 스터티7Java, android 스터티7
Java, android 스터티7
 
17 adapter view & db
17 adapter view & db17 adapter view & db
17 adapter view & db
 
Holub on-patterns-2-1
Holub on-patterns-2-1Holub on-patterns-2-1
Holub on-patterns-2-1
 
HolubOnPatterns/chapter2_1
HolubOnPatterns/chapter2_1HolubOnPatterns/chapter2_1
HolubOnPatterns/chapter2_1
 
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
(닷넷,자마린,아이폰실습)Xamarin.iOS HelloWorld 실습_멀티화면,화면전환_Xamarin교육/Xamarin강좌
 
React native study
React native studyReact native study
React native study
 
[스프링 스터디 3일차] AOP와 LTW
[스프링 스터디 3일차] AOP와 LTW[스프링 스터디 3일차] AOP와 LTW
[스프링 스터디 3일차] AOP와 LTW
 
컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기
 
모바일 앱 프로그래밍 2015-2019년 출석수업대체시험
모바일 앱 프로그래밍 2015-2019년 출석수업대체시험모바일 앱 프로그래밍 2015-2019년 출석수업대체시험
모바일 앱 프로그래밍 2015-2019년 출석수업대체시험
 

More from Ju-ri Seo

Jurano강의 lec6 android_annotations_threading
Jurano강의 lec6 android_annotations_threadingJurano강의 lec6 android_annotations_threading
Jurano강의 lec6 android_annotations_threadingJu-ri Seo
 
Jurano강의 lec5 android_annotations_event_binding
Jurano강의 lec5 android_annotations_event_bindingJurano강의 lec5 android_annotations_event_binding
Jurano강의 lec5 android_annotations_event_bindingJu-ri Seo
 
Jurano강의 lec4 android_annotations_application
Jurano강의 lec4 android_annotations_applicationJurano강의 lec4 android_annotations_application
Jurano강의 lec4 android_annotations_applicationJu-ri Seo
 
Jurano강의 lec3 android_annotations_enhanced_components
Jurano강의 lec3 android_annotations_enhanced_componentsJurano강의 lec3 android_annotations_enhanced_components
Jurano강의 lec3 android_annotations_enhanced_componentsJu-ri Seo
 
150709 알고리즘문제풀이팁
150709 알고리즘문제풀이팁150709 알고리즘문제풀이팁
150709 알고리즘문제풀이팁Ju-ri Seo
 
150708 알고리즘 문제풀이 이것은 알자
150708 알고리즘 문제풀이 이것은 알자150708 알고리즘 문제풀이 이것은 알자
150708 알고리즘 문제풀이 이것은 알자Ju-ri Seo
 

More from Ju-ri Seo (6)

Jurano강의 lec6 android_annotations_threading
Jurano강의 lec6 android_annotations_threadingJurano강의 lec6 android_annotations_threading
Jurano강의 lec6 android_annotations_threading
 
Jurano강의 lec5 android_annotations_event_binding
Jurano강의 lec5 android_annotations_event_bindingJurano강의 lec5 android_annotations_event_binding
Jurano강의 lec5 android_annotations_event_binding
 
Jurano강의 lec4 android_annotations_application
Jurano강의 lec4 android_annotations_applicationJurano강의 lec4 android_annotations_application
Jurano강의 lec4 android_annotations_application
 
Jurano강의 lec3 android_annotations_enhanced_components
Jurano강의 lec3 android_annotations_enhanced_componentsJurano강의 lec3 android_annotations_enhanced_components
Jurano강의 lec3 android_annotations_enhanced_components
 
150709 알고리즘문제풀이팁
150709 알고리즘문제풀이팁150709 알고리즘문제풀이팁
150709 알고리즘문제풀이팁
 
150708 알고리즘 문제풀이 이것은 알자
150708 알고리즘 문제풀이 이것은 알자150708 알고리즘 문제풀이 이것은 알자
150708 알고리즘 문제풀이 이것은 알자
 

Jurano강의 lec7 android_annotations_resource_injection_and_rest_api