Download - CHAP 3. 첫번째 애플리케이션
CHAP 3. 첫번째 애플리케이션
예제 #1: text 문자를 출력 예제 #2: UI 를 XML 로 표현 – main.xml
예제 #3: string 을 resource 로 표현 – string.xml
-> 코드 독립성 / 유지보수
© 2012 생능출판사 All rights reserved
마법사를 이용한 예제 프로그램 [File]->[New]->[Android Application Project]
메뉴응용프로그램 이름
프로젝트 이름
페키지 이름
애플리케이션이 실행될 수 있는 최소 SDK 버전
장치의 죄대 SDK 버전
컴파일 버전
© 2012 생능출판사 All rights reserved
마법사를 이용한 예제 프로그램
© 2012 생능출판사 All rights reserved
아이콘 지정 대화 상자
© 2012 생능출판사 All rights reserved
액티비티 종류 지정
© 2012 생능출판사 All rights reserved
액티비티 이름
© 2012 생능출판사 All rights reserved
코드 입력
© 2012 생능출판사 All rights reserved
애플리케이션 실행
© 2012 생능출판사 All rights reserved
에뮬레이터 동작
© 2012 생능출판사 All rights reserved
애플리케이션 실행 화면
© 2012 생능출판사 All rights reserved
애플리케이션의 구성
© 2012 생능출판사 All rights reserved
패키지 폴더의 설명
© 2012 생능출판사 All rights reserved
실제 장치와의 연결 USB 드라이버 설치 : 이클립스가 실제장치를
인식함 . 삼성 통합 USB 드라이버 http://www.samsung.com/sec/support/pcApplication/USB/
Android 장치에서 "USB 디버깅 " 을 항목을 켠다 . 환경설정 > 개발자옵션 >USB 디버깅
애플리케이션 실행시 : 이클립스에서 실행하기를 원하는 장치 선택 - Device Chooser 화면
© 2012 생능출판사 All rights reserved
USB 디버깅
© 2012 생능출판사 All rights reserved
실제 장치에서 실행하기
© 2012 생능출판사 All rights reserved
자동 생성된 코드를 수정 ( 예제 #1)
“ 자바” 과목에서 학습하였던 친근한 방식으로 화면을 생성하여 보자 .
코드를 사용하여서 사용자 인터페이스 (UI) 를 생성하여 본다 .
© 2012 생능출판사 All rights reserved
수정된 소스 onCreate() : chap 11
Android 는 onCreate() 를 호출하여 액티비티 객체 생성 딱 한번만 실행되는 초기화 코드 포함
© 2012 생능출판사 All rights reserved
TIP
필요한 패키지를 가장 쉽게 프로젝트에 추가하는 방법은 Ctrl-Shift-O 를 누르는 것이다 .
-> 이클립스가 자동으로 필요한 패키지를 찾아서 import 문을 추가하여 준다 .
앞으로는 무조건 소스만 입력한 후에 Ctrl-Shift-O를 눌러보자 .
© 2012 생능출판사 All rights reserved
실행 화면
© 2012 생능출판사 All rights reserved
PACKAGE KR.CO.COMPANY.HELLO;
패키지 (package) 는 클래스들을 보관하는 컨테이너
클래스 이름의 충돌을 막기위해 도안됨 일반적으로 인터넷의 도메인 이름을 역순으로 사용
© 2012 생능출판사 All rights reserved
IMPORT ANDROID.APP.ACTIVITY;
import 문장은 외부에서 패키지나 클래스를 포함 앞에 android 가 붙은 패키지는 안드로이드가
제공하는 패키지를 의미한다 .
© 2012 생능출판사 All rights reserved
PUBLIC CLASS MAINACTIVITY EX-TENDS ACTIVITY { ... }
클래스의 정의 Activity 로부터 상속 받았으므로 액티비티가 된
다 . 액티비티는 안드로이드에서 애플리케이션을
구성하는 4 가지의 컴포넌트 중의 하나이다 .
© 2012 생능출판사 All rights reserved
@OVERRIDE
어노테이션의 하나 어노테이션은 컴파일러에게 추가적인 정보를 주는
것 @Override 은 메소드가 부모 클래스의 메소드를
재정의 ( 오버라이드 ) 하였다는 것을 나타낸다 .
© 2012 생능출판사 All rights reserved
PUBLIC VOID ONCREATE() { … }
onCreate() 메소드는 액티비티가 생성되는 순간에 딱 한번 호출
모든 초기화와 사용자 인터페이스 설정이 여기에 들어간다 .
->Chap 11. 일시 중단되었던 앱을 다시 실행시키면 이전
상태에서 실행됨 -> 매개변수 : savedInstanceState
© 2012 생능출판사 All rights reserved
SUPER.ONCREATE(…);
부모 클래스인 Activity 클래스의 onCreate() 를 호출
© 2012 생능출판사 All rights reserved
TEXTVIEW TV = NEW TEXTVIEW(THIS);
new 는 새로운 객체를 만들 때 사용하는 키워드이다 .
TextView 의 객체를 생성하고 이것을 tv 로 참조한다 .
TextView 는 안드로이드에서 제공하는 UI 의 컴포넌트 객체로서 와 같이 화면에 텍스트를 표시할 때 , 사용한다 .
© 2012 생능출판사 All rights reserved
SETCONTENTVIEW(TV);
액티비티의 화면을 tv 로 설정
© 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);
}
}
© 2012 생능출판사 All rights reserved
안드로이드 애플리케이션의 실행이 시작되는 곳 안드로이드에는 main() 이 없음 . 액티비티별로 실행된다 . 액티비티 중에서는 onCreate() 메소드가 가장
먼저 실행된다 .
© 2012 생능출판사 All rights reserved
XML 을 이용해서 사용자 인터페이스 기술 ( 예제 #2)
사용자 인터페이스 작성 방법 코드를 사용하는 방법 ( 기존의 자바 ) XML 을 사용하는 방법 ( 안드로이드 선호 방법 )
안드로이드에서는 UI 화면의 구성을 XML 을 이용하여서 선언적으로 나타내는 방법을 선호 애플리케이션의 외관과 애플리케이션의 로직을 서로
분리 빠르게 UI 를 구축
© 2012 생능출판사 All rights reserved
일반적인 애플리케이션 작성 절차① 사용자 인터페이스 작성 (XML)② 자바 코드 작성 (JAVA)③ 매니페스트 파일 작성 (XML)
© 2012 생능출판사 All rights reserved
XML 을 이용한 사용자 인터페이스 작성 앞에서 코드로 작성하였던 UI 를 XML 로 표현하면
TextView tv = new TextView(this);
tv.setText("Hello, world!");
© 2012 생능출판사 All rights reserved
XML 을 이용한 사용자 인터페이스 작성 UI 컴포넌트 들은 XML 의 하나의 엘리먼트로
표현된다 . TextView 컴포넌트는 <TextView ... />
엘리먼트로 표현된다 .
© 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!" />
© 2012 생능출판사 All rights reserved
<TEXTVIEW> 의 어트리뷰트 설명
© 2012 생능출판사 All rights reserved
XML
시작 태그로 시작되어 종료 태그로 끝나는 논리적인 구성 요소를 엘리먼트 (element)
<Greeting>Hello, world.</Greeting> 가 엘리먼트
어트리뷰트 (attribute) 는 엘리먼트의 속성으로서 “이름 / 값”의 쌍으로 구성
<img src="madonna.jpg" alt='by Raphael'/>에서는 img 엘리먼트는 src 와 alt 라는 2 개의 어트리뷰트를 가진다 .
© 2012 생능출판사 All rights reserved
XML 파일의 위치 (/RES/LAYOUT/MAIN.XML)
© 2012 생능출판사 All rights reserved
XML UI 파일과 JAVA 코드와의 연결
© 2012 생능출판사 All rights reserved
자동 생성되는 R.JAVA 에 리소스 ID 값 정의
© 2012 생능출판사 All rights reserved
코드에서 리소스를 참조하는 방법- 앱에서 사용하는 resource 들은 R 클래스에 정의됨- 다시 각 타입별로 내부 클래스가 정의되어 있고 각각의
resource 는 이 클래스 안에서 상수 ID 가 부여됨- attr/dimen/drawable/id/layout/menu/string
© 2012 생능출판사 All rights reserved
리소스 ( 예제 #3)
Android 에서는 레이아웃 , 이미지 , 문자열 들을 리소스로 취급
drawable: 이미지 layout: layout (UI) values: 문자열 등 Android 에서는 가능하면
앱에서 사용하는 리소스들을 코드 바깥에 위치시킴
© 2012 생능출판사 All rights reserved
코드와 리소스를 분리하는 이유 안드로이드가 탑재된 장치들이 다양해지면서
언어나 화면 크기에 따라서 , 리소스를 다르게 하는 것이 필요
코드는 프로그래머가 작성 , UI 는 디자이너가 작성 독립성 : 개발 / 유지보수
© 2012 생능출판사 All rights reserved
문자열 리소스 문자열도 XML 로 기술하는 것이 바람직하다 .
android:text=“Hello. World!” 대신에 android:text=“@string/hello_world” //@ 는 re-
source 폴더 참조
© 2012 생능출판사 All rights reserved
실습 (P. 88 – HELLO3)
Hello3 애플리케이션 생성 /res/layout/main.xm 에서 android:text 변경 /res/values/string.xml 화면에 나오는 문자열을 한글로 변경한다 . 문자열을 리소스로 기술한다 . app_name/hello_world 값 변경
© 2012 생능출판사 All rights reserved
매니페스트 파일
© 2012 생능출판사 All rights reserved
매니페스트 파일 적재목록 : 애플리케이션에 적재된 모든
컴포넌트를 기술함 . AndroidManifest.xml Android 에게 애플리케이션의 컴포넌트들을
알려줌으로써 다른 애플리케이션이 내 컴포넌트를 실행할 수 있게함 -> intent (chap 11)
© 2012 생능출판사 All rights reserved
매니페스트 파일의 분석
© 2012 생능출판사 All rights reserved
SUMMARY
디버깅 : p.98 ~
이클립스 사용팁 : p.101 ~
애플리케이션은 컴포넌트들의 조합으로 만들어진다 .
코드와 리소스는 철저하게 분리된다 . 코드와 리소스는 개발 도구에 의하여 자동으로
생성되는 R.java 에 의하여 서로 연결된다 .