안드로이드 개요 안드로이드 구글에서 공개한 휴대전화와 모바일 디바이스를 위한

Содержание

Слайд 2

목차

Android Summary
View
Widget
View Group
Activity
Android Studio 개발 환경 설치

목차 Android Summary View Widget View Group Activity Android Studio 개발 환경 설치

Слайд 3

안드로이드 개요

안드로이드
구글에서 공개한 휴대전화와 모바일 디바이스를 위한 운영체제, 미들웨어 그리고 웹, SNS,

안드로이드 개요 안드로이드 구글에서 공개한 휴대전화와 모바일 디바이스를 위한 운영체제, 미들웨어 그리고
MMS 같은 어플리케이션을 포함한 소프트웨어 스택
안드로이드의 역사
2005년 안드로이드 사를 구글에서 인수
2007년 휴대전화용 안드로이드 플랫폼 발표 (무료)
안드로이드 SDK, 샘플, 안드로이드 시스템 구조, 안드로이드 내장 SW 개발 구조 공개
2008년 : Android SDK 1.0 발표 및 오픈소스(아파치 라이센스)로 공개
2013년 Android 4.4.x (킷캣) 발표
2014년 Android 5.0.x (롤리팝) 발표
2015년 Android 6.0 (마시멜로) 발표
2016년 Android 7.0 (누가) 발표

Слайд 4

안드로이드 개요 (cont.)

안드로이드 버전

안드로이드 개요 (cont.) 안드로이드 버전

Слайд 5

안드로이드 개요 (cont.)

안드로이드 버전

안드로이드 개요 (cont.) 안드로이드 버전

Слайд 6

안드로이드 구성 및 특징

안드로이드 구성 및 특징

Слайд 7

안드로이드 구성 및 특징

안드로이드 구성 및 특징

Слайд 8

안드로이드 계층 구조

구조도

안드로이드 계층 구조 구조도

Слайд 9

안드로이드 구조 (cont.)

애플리케이션 프레임워크(Framework)
Java 기반의 Framework
JNI(Java Native Interface)를 통한 native C/C++코드로 맵핑
핵심

안드로이드 구조 (cont.) 애플리케이션 프레임워크(Framework) Java 기반의 Framework JNI(Java Native Interface)를 통한
시스템 서비스를 담당하는 Core 시스템 서비스들과 하드웨어와의 인터페이스를 담당하는 하드웨어 서비스들로 구성

Слайд 10

안드로이드 구조 (cont.)

안드로이드 런타임(Runtime)
Core Libraries
Java 언어를 위한 Core API를 포함 (Data Structure, File

안드로이드 구조 (cont.) 안드로이드 런타임(Runtime) Core Libraries Java 언어를 위한 Core API를
Access, Utility, Graphic, Network Access, etc.)
ART
Java Bytecode 수행 (4.4(KitKat) 이전까지 Dalvik)
가상머신을 거치지 않고 곧바로 애플리케이션을 실행하도록 하여 속도 향상

Слайд 11

안드로이드 구조 (cont.)

Dalvik VM vs ART
Dalvik
안드로이드용 가상머신
JIT (Just-In-Time) 컴파일
프로그램 실행시 한번에 일정부분의

안드로이드 구조 (cont.) Dalvik VM vs ART Dalvik 안드로이드용 가상머신 JIT (Just-In-Time)
바이트코드를 읽어 램에 저장
ART
네이티브 코드 동작을 위한 런타임 라이브러리
AOT(Ahead-Of-Time) 컴파일
애플리케이션 설치 단계에서 바이트코드가 아닌 네이티브 코드로 변환
ART를 이용해 네이티브 앱을 실행하여 실행 속도를 향상 (Java 가상머신을 거치지 않음)
JIT방식에 비해 1.5~2.0 배 정도의 설치 용량

Слайд 12

안드로이드 구조 (cont.)

라이브러리 (Libraries)
Surface Manager off-screen 버퍼를 관리하고, 버퍼의 내용을 화면상에 띄울 수

안드로이드 구조 (cont.) 라이브러리 (Libraries) Surface Manager off-screen 버퍼를 관리하고, 버퍼의 내용을
있도록 Window manage에 전달
Media Framework 다양한 미디어 코덱들의 재생, 녹음 등을 지원하는프레임워크
OpenGL ES 화면상의 3D, 2D 그래픽을 렌더링하는 라이브러리
SQLite 데이터 저장을 위한 경량화된 오픈소스 기반 DB엔진
Blink 웹 컨텐츠를 보여주기 위한 브라우저 엔진

Слайд 13

안드로이드 구조 (cont.)

리눅스 커널 (Kernel)
리눅스 커널을 기반으로 하고 있으나, 안드로이드는 리눅스가 아님 (표준

안드로이드 구조 (cont.) 리눅스 커널 (Kernel) 리눅스 커널을 기반으로 하고 있으나, 안드로이드는
리눅스 유틸리티 등을 제외한, 리눅스의 커널부를 이용)
메모리 및 프로세스 관리, ‘Permission’ 기반의 보안 모델, 검증된 드라이버 모델, 공유 라이브러리 지원, 오픈 소스 기반 등의 장점
안드로이드 지원을 위해, 리눅스 커널 확장 패치를 포함 (Alarm, Ashmem, Binder, Power Management, Low Memory Killer, Kernel Debugger, Logger 등 확장)

Слайд 14

안드로이드 구조 (cont.)
안드로이드는 크게 2종류의 코드로 나뉨
기능(이벤트)을 담당하는 Java 코드
화면 UI를 담당하는

안드로이드 구조 (cont.) 안드로이드는 크게 2종류의 코드로 나뉨 기능(이벤트)을 담당하는 Java 코드
Xml 코드

Слайд 15

View, Widget, View Group

View : UI를 구성하는 기본적인 블럭
Widget : 애플리케이션 화면에

View, Widget, View Group View : UI를 구성하는 기본적인 블럭 Widget :
사용되는 UI 요소로 View를 상속 받는다. (TextView, ImageView, Button etc.)
View Group : 다른 뷰를 내부에 포함 할 수 있는 특수한 뷰 (layout, etc.)
App Widget: 애플리케이션 화면의 UI가 아닌, 안드로이드 기본 화면(런처 화면)에 위치하여 동작하는 형태의 애플리케이션. 일반적으로 위젯이라 부르지만 실제 명칭은 앱 위젯으로, 위의 위젯과 혼동하기 쉬우니 주의.

Слайд 16

View, Widget, View Group

View, Widget, View Group

Слайд 17

View

UI를 구성하는 기본적인 블럭
애플리케이션 화면에서 사각형의 영역을 차지하며 자신의 모양을 그리고, 일부 위젯은

View UI를 구성하는 기본적인 블럭 애플리케이션 화면에서 사각형의 영역을 차지하며 자신의 모양을
입력을 받아들임

Слайд 18

View – Margin / Padding

UI 구성 과정에서 View간의 여백을 지정하기 위해 margin과 padding을

View – Margin / Padding UI 구성 과정에서 View간의 여백을 지정하기 위해
사용
margin : View 외부 여백 (공간이 모자랄 경우 View의 크기를 줄이고 여백을 생성)
padding: View 내부 여백 (padding 값이 View의 크기보다 클 경우 컨텐츠가 사라짐)

Text

margin

padding

View

Слайд 19

px / sp / dp …

Android에서 View의 크기 등을 설정하는 크기의 단위로 px,

px / sp / dp … Android에서 View의 크기 등을 설정하는 크기의
sp, dp, in, mm, pt가 사용 가능

※ 해상도의 영향을 최소화하기 위해 텍스트의 크기를 지정할때는 sp, 그 외에는 dp 사용을 권장

Слайд 20

Widget

Widget
애플리케이션 화면에 사용되는 UI 요소로 View를 상속받음 (TextView, ImageView, Button, etc.)

Widget Widget 애플리케이션 화면에 사용되는 UI 요소로 View를 상속받음 (TextView, ImageView, Button, etc.)

Слайд 21

Widget – TextView

Text View ?
화면에 텍스트를 출력하는 위젯.
사용자의 입력을 받아들이지는 않는다.
주 사용

Widget – TextView Text View ? 화면에 텍스트를 출력하는 위젯. 사용자의 입력을
속성

Слайд 22

App > src > main > res > layout > activity_main.xml 에서

App > src > main > res > layout > activity_main.xml 에서
다음을 작성

Widget – TextView

Слайд 23

Widget – ImageView

ImageView ?
화면에 이미지를 보여주기 위한 위젯
이미지의 크기, 색조 등을 컨트롤

Widget – ImageView ImageView ? 화면에 이미지를 보여주기 위한 위젯 이미지의 크기, 색조 등을 컨트롤 가능
가능

Слайд 24

Widget – ImageView 속성

Widget – ImageView 속성

Слайд 25

Widget – ImageView

이미지 등록 방법
app\src\main\res\drawable\ 경로에 이미지 복사

Widget – ImageView 이미지 등록 방법 app\src\main\res\drawable\ 경로에 이미지 복사

Слайд 26

Widget – ImageView 예제

Widget – ImageView 예제

Слайд 27

Widget – Button

Button ?
사용자의 push입력을 전달받는 위젯
함수를 연결함으로써 다양한 기능을 수행
OnClickListener지정된 라이브러리에

Widget – Button Button ? 사용자의 push입력을 전달받는 위젯 함수를 연결함으로써 다양한
입력에 따른 동작 정의

Слайд 28

Widget – Button(OnClickListener)

버튼의 기본 함수 형태

버튼 클래스 객체 선언 및 id를 이용해

Widget – Button(OnClickListener) 버튼의 기본 함수 형태 버튼 클래스 객체 선언 및
UI와 연결

버튼에 클릭 입력을 받아들이는 OnClickListener 객체 지정
OnClickListener내부의 Abstract Method인 onClick을 Overriding하여 클릭시 수행 할 코드를 작성

.xml파일에서 id 지정

Слайд 29

Widget – EditText

EditText ?
문자열을 입력하기 위한 위젯
setText(), getText() 함수를 이용해 문자열을 이용

Widget – EditText EditText ? 문자열을 입력하기 위한 위젯 setText(), getText() 함수를 이용해 문자열을 이용

Слайд 30

Widget – Button & EditText 예제

activity_main.xml

MainActivity.java

Widget – Button & EditText 예제 activity_main.xml MainActivity.java

Слайд 31

Widget – Button & EditText 예제

Widget – Button & EditText 예제

Слайд 32

ViewGroup

View Group
다른 뷰를 내부에 포함 할 수 있는 특수한 뷰로 View를 상속받음

ViewGroup View Group 다른 뷰를 내부에 포함 할 수 있는 특수한 뷰로 View를 상속받음

Слайд 33

ViewGroup - Layout

Layout ?
내부에 다른 widget 혹은 Layout을 담는 ViewGroup
Layout은 눈에 보이지

ViewGroup - Layout Layout ? 내부에 다른 widget 혹은 Layout을 담는 ViewGroup
않지만, widget의 배치방식을 결정

Layout과 Button, ImageView,
TextView만을 이용하여 만들어 본
화면 구성

Слайд 34

Layout – LinearLayout

LinearLayout ?
화면 구성에 가장 많이 사용되는 Layout
자식 view를 일렬로 배치하는

Layout – LinearLayout LinearLayout ? 화면 구성에 가장 많이 사용되는 Layout 자식
Layout
android:orientation 속성을 통해 가로배치(horizon)/세로배치(vertical) 설정

Слайд 35

Layout – LinearLayout 예제

Layout – LinearLayout 예제

Слайд 36

Layout – RelativeLayout

RelativeLayout ?
자식 view간의 상대적인 위치를 지정하여 배치하는 Layout
Layout이 아닌 자식

Layout – RelativeLayout RelativeLayout ? 자식 view간의 상대적인 위치를 지정하여 배치하는 Layout
view의 속성을 통해 각각의 위치를 지정

Слайд 37

Layout – RelativeLayout 예제

id

Layout – RelativeLayout 예제 id

Слайд 38

Layout – TableLayout

TableLayout ?
화면을 표처럼 열과 행으로 구분하여 구성하는 Layout
android:stretchColumns속성으로 열 갯수

Layout – TableLayout TableLayout ? 화면을 표처럼 열과 행으로 구분하여 구성하는 Layout
지정
태그를 이용하여 행 구분
자식 view에 android:layout_column 속성을 사용하여 열 지정

Слайд 39

Layout – TableLayout 예제

Layout – TableLayout 예제

Слайд 40

Layout in Layout

레이아웃 내부에 다른 레이아웃을 넣는 것으로 효율적인 화면 구성이 가능

Layout in Layout 레이아웃 내부에 다른 레이아웃을 넣는 것으로 효율적인 화면 구성이 가능

Слайд 41

Layout – gravity와 layout_gravity

Android:gravity 속성
해당 속성을 지닌 view 내부 컨텐츠(자식 view포함)의 위치를

Layout – gravity와 layout_gravity Android:gravity 속성 해당 속성을 지닌 view 내부 컨텐츠(자식
지정하는 속성 (ex :

Слайд 42

Layout – gravity와 layout_gravity

android:gravity & android:layout_gravity 에 설정할 수 있는 값
Left, right,

Layout – gravity와 layout_gravity android:gravity & android:layout_gravity 에 설정할 수 있는 값
top, bottom
center, center_vertical, center_horizontal

Слайд 43

Layout – layout_weight

android:layout_weight
남는 공간을 어떻게 배분 할 지를 지정하는 속성
layout_weight=“0” -> 해당

Layout – layout_weight android:layout_weight 남는 공간을 어떻게 배분 할 지를 지정하는 속성
view는 남는 공간을 사용하지 않음
layout_weight=“1” -> 해당 view는 남는 공간을 1의 비율로 사용
남는 공간을 사용할 수 있는 모든 view에 대하여 layout_weight / 모든 view의 layout_weight의 합 의 비율로 남는 공간을 분배
일반적으로 크기를 0dp를 주고, 공간을 비율에 맞춰 나눠 가지도록 하는 방법을 많이 사용

Слайд 44

Android – Activity

어플리케이션 내의 하나의 스크린
UI컴포넌트를 화면에 표시하고 시스템이나 사용자의 반응을 처리
어플리케이션이

Android – Activity 어플리케이션 내의 하나의 스크린 UI컴포넌트를 화면에 표시하고 시스템이나 사용자의
UI를 가진다면 하나 혹은 그 이상의 Activity와 매칭되며 기존 Activity는 같은 기능을 하는 새로운 것으로 대체 가능

Слайд 45

Activity – Activity Stack

어플리케이션에서 호출되는 Activity는 Activity Stack에서 관리
Stack 구조를 채용하여 오래된

Activity – Activity Stack 어플리케이션에서 호출되는 Activity는 Activity Stack에서 관리 Stack 구조를
Activity일 수록 하단에 배치
모바일 기기 특성에 맞춘 구조
PC에 비해 사양이 낮은 모바일 기기 특성상 메모리 부족 현상이 발생하기 쉬움
메모리 부족 현상 방지를 위해 Stack 하단부의 Activity를 제거하여 효율적으로 메모리를 관리
Flag 속성을 이용하여 보다 효율적인 스택관리intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Слайд 46

Activity – Lifecycle

Activity – Lifecycle

Слайд 47

Activity – Lifecycle

Activity – Lifecycle

Слайд 48

Android – Lifecycle

※ Lifecycle관련 함수를 사용하는 방법
*.java 프로젝트 코드에서 마우스 우클릭 –>

Android – Lifecycle ※ Lifecycle관련 함수를 사용하는 방법 *.java 프로젝트 코드에서 마우스
Generate –> Override Methods... 선택 -> 원하는 항목 선택

Слайд 49

Android – Activity 예제

activity_main.xml

MainActivity.java

SubActivity라는 이름의 액티비티로 전환 (Intent에 대한 내용은 다음주)

Android – Activity 예제 activity_main.xml MainActivity.java SubActivity라는 이름의 액티비티로 전환 (Intent에 대한 내용은 다음주)

Слайд 50

Android – Activity 예제

activity_sub.xml

SubActivity.java

Android – Activity 예제 activity_sub.xml SubActivity.java

Слайд 51

Android – Activity 예제

매니페스트 등록!
보안상의 이유로 응용 프로그램에 포함된 모든 액티비티는 반드시

Android – Activity 예제 매니페스트 등록! 보안상의 이유로 응용 프로그램에 포함된 모든
매니페스트에 등록되어야 함

Слайд 52

Android – Activity 예제

결과 화면

Android – Activity 예제 결과 화면

Слайд 53

Android 개발환경 설치

Android 개발 도구
JDK(Java Development Kit)
Android SDK
Android Studio
Android 개발환경 설치 순서
JDK,

Android 개발환경 설치 Android 개발 도구 JDK(Java Development Kit) Android SDK Android
Android Studio다운로드
Java 개발환경 설치하기
Android Studio 다운로드 및 설치하기

Слайд 54

Java 설치하기

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Java 설치하기 http://www.oracle.com/technetwork/java/javase/downloads/index.html

Слайд 55

Java 설치하기
이용약관 동의 후 본인의 OS에 맞는 버전을 다운로드
Java는 이미 설치되어 있으므로,

Java 설치하기 이용약관 동의 후 본인의 OS에 맞는 버전을 다운로드 Java는 이미
이 과정은 생략하셔도 됩니다.

Слайд 56

Android Studio 설치

해당 링크 에서 Android Studio 다운로드 및 설치
http://developer.android.com/intl/ko/sdk/index.html

Android Studio 설치 해당 링크 에서 Android Studio 다운로드 및 설치 http://developer.android.com/intl/ko/sdk/index.html

Слайд 57

Android 프로젝트 생성

초기 시작 창에서 Start a new Android Studio project 선택

Android 프로젝트 생성 초기 시작 창에서 Start a new Android Studio project 선택

Слайд 58

Android 프로젝트 생성

원하는 프로젝트 명을 입력

Android 프로젝트 생성 원하는 프로젝트 명을 입력

Слайд 59

Android 프로젝트 생성

생성하는 프로젝트의 최소 지원 버전을 설정

API 16:Android 4.1 (Jelly

Android 프로젝트 생성 생성하는 프로젝트의 최소 지원 버전을 설정 API 16:Android 4.1 (Jelly Bean)으로 설정
Bean)으로 설정

Слайд 60

Android 프로젝트 생성

프로젝트의 초기화면으로 Blank Activity 선택

이 외에도 자신이 원하는 초기화면에 따라서

Android 프로젝트 생성 프로젝트의 초기화면으로 Blank Activity 선택 이 외에도 자신이 원하는
Activity 를 다르게 선택 가능

Слайд 61

Android 프로젝트 생성

자신이 원하는 명칭을 입력하거나 입력 없이 Next 버튼 클릭

Android 프로젝트 생성 자신이 원하는 명칭을 입력하거나 입력 없이 Next 버튼 클릭

Слайд 62

Android 프로젝트 생성

프로젝트 생성 완료

Android 프로젝트 생성 프로젝트 생성 완료

Слайд 63

Android SDK 설치

상단의 File -> Settings… 클릭
Settings 창에서 sdk 검색 후
해당

Android SDK 설치 상단의 File -> Settings… 클릭 Settings 창에서 sdk 검색
SDK Platform(Jelly bean, Nougat etc) 선택 후 OK 클릭(작은 창도 OK 클릭)

Слайд 64

Android SDK 설치(Cont.)

하단에 Accept 선택 후 Next

Android SDK 설치(Cont.) 하단에 Accept 선택 후 Next

Слайд 65

Android 에뮬레이터(AVD) 생성

AVD Manager 선택

Android 에뮬레이터(AVD) 생성 AVD Manager 선택

Слайд 66

Android 에뮬레이터(AVD) 생성

Create Virtual Device… 버튼 클릭

Android 에뮬레이터(AVD) 생성 Create Virtual Device… 버튼 클릭

Слайд 67

Android 에뮬레이터(AVD) 생성

Select Hardware > Galaxy Nexus 선택
자신이 원하는 API Level 선택

Android 에뮬레이터(AVD) 생성 Select Hardware > Galaxy Nexus 선택 자신이 원하는 API
후 Next

자신이 원하는 버전이 설치가 안되어있다면
하단의 Show downloadable system images를 체크 한 후 Download 링크를 선택하여 설치

Слайд 68

Android 에뮬레이터(AVD) 생성

Finish 버튼 클릭

Android 에뮬레이터(AVD) 생성 Finish 버튼 클릭

Слайд 69

Android 에뮬레이터(AVD) 생성

AVD가 생성 완료 후 오른쪽 실행 버튼 클릭

Android 에뮬레이터(AVD) 생성 AVD가 생성 완료 후 오른쪽 실행 버튼 클릭

Слайд 70

Android 에뮬레이터(AVD) 생성

실행을 하면 AVD가 실행
(AVD가 실행 되기까지 컴퓨터 사양에 따라서

Android 에뮬레이터(AVD) 생성 실행을 하면 AVD가 실행 (AVD가 실행 되기까지 컴퓨터 사양에
첫 번째 그림과 같은 화면에서 길게는 30분 정도 소요)

Слайд 71

Hello World!를 띄워보자!

현재 실행 된 프로젝트에는 기본적으로 Hello World!가 나오도록 되어 있으므로

Hello World!를 띄워보자! 현재 실행 된 프로젝트에는 기본적으로 Hello World!가 나오도록 되어
아래 그림과 같이 실행 버튼을 클릭 (실행 시에 구동 될 스마트 폰 또는 AVD를 연결 및 구동시켜 놔야 함)

Слайд 72

Hello World!를 띄워보자!

현재 실행할 플랫폼을 선택
(AVD 이외에 일반 스마트 폰이 연결

Hello World!를 띄워보자! 현재 실행할 플랫폼을 선택 (AVD 이외에 일반 스마트 폰이
되어 있다면 목록에 같이 정렬되어 선택이 가능)
Имя файла: 안드로이드-개요-안드로이드-구글에서-공개한-휴대전화와-모바일-디바이스를-위한.pptx
Количество просмотров: 37
Количество скачиваний: 0