chap 3. 첫번째 애플리케이션

48
CHAP 3. 첫첫첫 첫첫첫첫첫첫 첫첫 #1: text 첫첫첫 첫첫 첫첫 #2: UI 첫 XML 첫 첫첫 – main.xml 첫첫 #3: string 첫 resource 첫 첫첫 – string.xml -> 첫첫 첫첫첫 / 첫첫첫첫

Upload: rufus

Post on 06-Jan-2016

58 views

Category:

Documents


8 download

DESCRIPTION

CHAP 3. 첫번째 애플리케이션. 예제 #1: text 문자를 출력 예제 #2: UI 를 XML 로 표현 – main.xml 예제 #3: string 을 resource 로 표현 – string.xml -> 코드 독립성 / 유지보수. 마법사를 이용한 예제 프로그램. [File]->[New]->[Android Application Project] 메뉴. 응용프로그램 이름. 프로젝트 이름. 페키지 이름. 애플리케이션이 실행될 수 있는 최소 SDK 버전. 컴파일 버전. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CHAP 3.  첫번째  애플리케이션

CHAP 3. 첫번째 애플리케이션

예제 #1: text 문자를 출력 예제 #2: UI 를 XML 로 표현 – main.xml

예제 #3: string 을 resource 로 표현 – string.xml

-> 코드 독립성 / 유지보수

Page 2: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

마법사를 이용한 예제 프로그램 [File]->[New]->[Android Application Project]

메뉴응용프로그램 이름

프로젝트 이름

페키지 이름

애플리케이션이 실행될 수 있는 최소 SDK 버전

장치의 죄대 SDK 버전

컴파일 버전

Page 3: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

마법사를 이용한 예제 프로그램

Page 4: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

아이콘 지정 대화 상자

Page 5: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

액티비티 종류 지정

Page 6: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

액티비티 이름

Page 7: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

코드 입력

Page 8: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

애플리케이션 실행

Page 9: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

에뮬레이터 동작

Page 10: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

애플리케이션 실행 화면

Page 11: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

애플리케이션의 구성

Page 12: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

패키지 폴더의 설명

Page 13: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

실제 장치와의 연결 USB 드라이버 설치 : 이클립스가 실제장치를

인식함 . 삼성 통합 USB 드라이버 http://www.samsung.com/sec/support/pcApplication/USB/

Android 장치에서 "USB 디버깅 " 을 항목을 켠다 . 환경설정 > 개발자옵션 >USB 디버깅

애플리케이션 실행시 : 이클립스에서 실행하기를 원하는 장치 선택 - Device Chooser 화면

Page 14: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

USB 디버깅

Page 15: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

실제 장치에서 실행하기

Page 16: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

자동 생성된 코드를 수정 ( 예제 #1)

“ 자바” 과목에서 학습하였던 친근한 방식으로 화면을 생성하여 보자 .

코드를 사용하여서 사용자 인터페이스 (UI) 를 생성하여 본다 .

Page 17: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

수정된 소스 onCreate() : chap 11

Android 는 onCreate() 를 호출하여 액티비티 객체 생성 딱 한번만 실행되는 초기화 코드 포함

Page 18: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

TIP

필요한 패키지를 가장 쉽게 프로젝트에 추가하는 방법은 Ctrl-Shift-O 를 누르는 것이다 .

-> 이클립스가 자동으로 필요한 패키지를 찾아서 import 문을 추가하여 준다 .

앞으로는 무조건 소스만 입력한 후에 Ctrl-Shift-O를 눌러보자 .

Page 19: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

실행 화면

Page 20: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

PACKAGE KR.CO.COMPANY.HELLO;

패키지 (package) 는 클래스들을 보관하는 컨테이너

클래스 이름의 충돌을 막기위해 도안됨 일반적으로 인터넷의 도메인 이름을 역순으로 사용

Page 21: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

IMPORT ANDROID.APP.ACTIVITY;

import 문장은 외부에서 패키지나 클래스를 포함 앞에 android 가 붙은 패키지는 안드로이드가

제공하는 패키지를 의미한다 .

Page 22: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

PUBLIC CLASS MAINACTIVITY EX-TENDS ACTIVITY { ... }

클래스의 정의 Activity 로부터 상속 받았으므로 액티비티가 된

다 . 액티비티는 안드로이드에서 애플리케이션을

구성하는 4 가지의 컴포넌트 중의 하나이다 .

Page 23: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

@OVERRIDE

어노테이션의 하나 어노테이션은 컴파일러에게 추가적인 정보를 주는

것 @Override 은 메소드가 부모 클래스의 메소드를

재정의 ( 오버라이드 ) 하였다는 것을 나타낸다 .

Page 24: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

PUBLIC VOID ONCREATE() { … }

onCreate() 메소드는 액티비티가 생성되는 순간에 딱 한번 호출

모든 초기화와 사용자 인터페이스 설정이 여기에 들어간다 .

->Chap 11. 일시 중단되었던 앱을 다시 실행시키면 이전

상태에서 실행됨 -> 매개변수 : savedInstanceState

Page 25: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

SUPER.ONCREATE(…);

부모 클래스인 Activity 클래스의 onCreate() 를 호출

Page 26: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

TEXTVIEW TV = NEW TEXTVIEW(THIS);

new 는 새로운 객체를 만들 때 사용하는 키워드이다 .

TextView 의 객체를 생성하고 이것을 tv 로 참조한다 .

TextView 는 안드로이드에서 제공하는 UI 의 컴포넌트 객체로서 와 같이 화면에 텍스트를 표시할 때 , 사용한다 .

Page 27: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

SETCONTENTVIEW(TV);

액티비티의 화면을 tv 로 설정

Page 28: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

복습package kr.co.company.hello;

 

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

 

public class MainActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

TextView tv = new TextView(this);

tv.setText("Hello, world!");

setContentView(tv);

}

}

Page 29: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

안드로이드 애플리케이션의 실행이 시작되는 곳 안드로이드에는 main() 이 없음 . 액티비티별로 실행된다 . 액티비티 중에서는 onCreate() 메소드가 가장

먼저 실행된다 .

Page 30: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

XML 을 이용해서 사용자 인터페이스 기술 ( 예제 #2)

사용자 인터페이스 작성 방법 코드를 사용하는 방법 ( 기존의 자바 ) XML 을 사용하는 방법 ( 안드로이드 선호 방법 )

안드로이드에서는 UI 화면의 구성을 XML 을 이용하여서 선언적으로 나타내는 방법을 선호 애플리케이션의 외관과 애플리케이션의 로직을 서로

분리 빠르게 UI 를 구축

Page 31: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

일반적인 애플리케이션 작성 절차① 사용자 인터페이스 작성 (XML)② 자바 코드 작성 (JAVA)③ 매니페스트 파일 작성 (XML)

Page 32: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

XML 을 이용한 사용자 인터페이스 작성 앞에서 코드로 작성하였던 UI 를 XML 로 표현하면

TextView tv = new TextView(this);

tv.setText("Hello, world!");

Page 33: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

XML 을 이용한 사용자 인터페이스 작성 UI 컴포넌트 들은 XML 의 하나의 엘리먼트로

표현된다 . TextView 컴포넌트는 <TextView ... />

엘리먼트로 표현된다 .

Page 34: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

XML 파일의 분석<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/textview"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Hello, world!" />

Page 35: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

<TEXTVIEW> 의 어트리뷰트 설명

Page 36: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

XML

시작 태그로 시작되어 종료 태그로 끝나는 논리적인 구성 요소를 엘리먼트 (element)

<Greeting>Hello, world.</Greeting> 가 엘리먼트

어트리뷰트 (attribute) 는 엘리먼트의 속성으로서 “이름 / 값”의 쌍으로 구성

<img src="madonna.jpg" alt='by Raphael'/>에서는 img 엘리먼트는 src 와 alt 라는 2 개의 어트리뷰트를 가진다 .

Page 37: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

XML 파일의 위치 (/RES/LAYOUT/MAIN.XML)

Page 38: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

XML UI 파일과 JAVA 코드와의 연결

Page 39: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

자동 생성되는 R.JAVA 에 리소스 ID 값 정의

Page 40: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

코드에서 리소스를 참조하는 방법- 앱에서 사용하는 resource 들은 R 클래스에 정의됨- 다시 각 타입별로 내부 클래스가 정의되어 있고 각각의

resource 는 이 클래스 안에서 상수 ID 가 부여됨- attr/dimen/drawable/id/layout/menu/string

Page 41: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

리소스 ( 예제 #3)

Android 에서는 레이아웃 , 이미지 , 문자열 들을 리소스로 취급

drawable: 이미지 layout: layout (UI) values: 문자열 등 Android 에서는 가능하면

앱에서 사용하는 리소스들을 코드 바깥에 위치시킴

Page 42: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

코드와 리소스를 분리하는 이유 안드로이드가 탑재된 장치들이 다양해지면서

언어나 화면 크기에 따라서 , 리소스를 다르게 하는 것이 필요

코드는 프로그래머가 작성 , UI 는 디자이너가 작성 독립성 : 개발 / 유지보수

Page 43: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

문자열 리소스 문자열도 XML 로 기술하는 것이 바람직하다 .

android:text=“Hello. World!” 대신에 android:text=“@string/hello_world” //@ 는 re-

source 폴더 참조

Page 44: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

실습 (P. 88 – HELLO3)

Hello3 애플리케이션 생성 /res/layout/main.xm 에서 android:text 변경 /res/values/string.xml 화면에 나오는 문자열을 한글로 변경한다 . 문자열을 리소스로 기술한다 . app_name/hello_world 값 변경

Page 45: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

매니페스트 파일

Page 46: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

매니페스트 파일 적재목록 : 애플리케이션에 적재된 모든

컴포넌트를 기술함 . AndroidManifest.xml Android 에게 애플리케이션의 컴포넌트들을

알려줌으로써 다른 애플리케이션이 내 컴포넌트를 실행할 수 있게함 -> intent (chap 11)

Page 47: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

매니페스트 파일의 분석

Page 48: CHAP 3.  첫번째  애플리케이션

© 2012 생능출판사 All rights reserved

SUMMARY

디버깅 : p.98 ~

이클립스 사용팁 : p.101 ~

애플리케이션은 컴포넌트들의 조합으로 만들어진다 .

코드와 리소스는 철저하게 분리된다 . 코드와 리소스는 개발 도구에 의하여 자동으로

생성되는 R.java 에 의하여 서로 연결된다 .