1 / 48

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

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

rufus
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CHAP 3. 첫번째 애플리케이션 예제 #1: text 문자를 출력 예제 #2: UI를 XML로 표현 – main.xml 예제 #3: string을 resource로 표현 – string.xml -> 코드 독립성/유지보수

  2. 마법사를 이용한 예제 프로그램 • [File]->[New]->[Android Application Project] 메뉴 응용프로그램 이름 프로젝트 이름 페키지 이름 애플리케이션이 실행될 수 있는 최소 SDK 버전 컴파일 버전 장치의 죄대SDK 버전

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

  4. 아이콘 지정 대화 상자

  5. 액티비티 종류 지정

  6. 액티비티 이름

  7. 코드 입력

  8. 애플리케이션 실행

  9. 에뮬레이터 동작

  10. 애플리케이션 실행 화면

  11. 애플리케이션의 구성

  12. 패키지 폴더의 설명

  13. 실제 장치와의 연결 • USB 드라이버설치: 이클립스가 실제장치를 인식함. 삼성 통합 USB 드라이버 http://www.samsung.com/sec/support/pcApplication/USB/ • Android 장치에서 "USB 디버깅"을 항목을 켠다. 환경설정>개발자옵션>USB 디버깅 • 애플리케이션 실행시: 이클립스에서 실행하기를 원하는 장치 선택 -Device Chooser 화면

  14. USB 디버깅

  15. 실제 장치에서 실행하기

  16. 자동 생성된 코드를 수정 (예제 #1) • “자바” 과목에서 학습하였던 친근한 방식으로 화면을 생성하여 보자. • 코드를 사용하여서 사용자인터페이스(UI)를 생성하여 본다.

  17. 수정된소스 • onCreate() : chap 11 • Android는 onCreate()를 호출하여 액티비티 객체 생성 • 딱 한번만 실행되는 초기화 코드 포함

  18. TIP • 필요한 패키지를 가장 쉽게 프로젝트에 추가하는 방법은 Ctrl-Shift-O 를 누르는 것이다. -> 이클립스가 자동으로 필요한 패키지를 찾아서 import 문을 추가하여 준다. • 앞으로는무조건 소스만 입력한 후에 Ctrl-Shift-O를 눌러보자.

  19. 실행 화면

  20. packagekr.co.company.hello; • 패키지(package)는 클래스들을 보관하는 컨테이너 • 클래스 이름의 충돌을 막기위해 도안됨 • 일반적으로 인터넷의 도메인 이름을 역순으로 사용

  21. importandroid.app.Activity; • import 문장은 외부에서 패키지나 클래스를 포함 • 앞에 android가 붙은 패키지는 안드로이드가 제공하는 패키지를 의미한다.

  22. public class MainActivity extends Activity { ... } • 클래스의 정의 • Activity로부터 상속 받았으므로 액티비티가 된다. • 액티비티는안드로이드에서 애플리케이션을 구성하는 4가지의 컴포넌트 중의 하나이다.

  23. @Override • 어노테이션의 하나 • 어노테이션은 컴파일러에게 추가적인 정보를 주는 것 • @Override은 메소드가 부모 클래스의 메소드를재정의(오버라이드)하였다는 것을 나타낸다.

  24. public void onCreate() { … } • onCreate() 메소드는액티비티가생성되는 순간에 딱 한번 호출 • 모든 초기화와 사용자 인터페이스 설정이 여기에 들어간다. ->Chap 11. • 일시 중단되었던 앱을 다시 실행시키면 이전 상태에서 실행됨 ->매개변수: savedInstanceState

  25. super.onCreate(…); • 부모 클래스인 Activity 클래스의 onCreate()를 호출

  26. TextViewtv = new TextView(this); • new는 새로운 객체를 만들 때 사용하는 키워드이다. • TextView의 객체를 생성하고 이것을 tv로 참조한다. • TextView는 안드로이드에서 제공하는 UI의 컴포넌트 객체로서 와 같이 화면에 텍스트를 표시할 때, 사용한다.

  27. setContentView(tv); • 액티비티의 화면을 tv로 설정

  28. 복습 packagekr.co.company.hello; importandroid.app.Activity; importandroid.os.Bundle; importandroid.widget.TextView; publicclassMainActivityextends Activity { @Override publicvoidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextViewtv = newTextView(this); tv.setText("Hello, world!"); setContentView(tv); } }

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

  30. XML을 이용해서 사용자 인터페이스 기술 (예제#2) • 사용자 인터페이스 작성 방법 • 코드를 사용하는 방법(기존의 자바) • XML을 사용하는 방법(안드로이드 선호 방법) • 안드로이드에서는UI 화면의 구성을 XML을 이용하여서 선언적으로 나타내는 방법을 선호 • 애플리케이션의 외관과 애플리케이션의 로직을서로 분리 • 빠르게 UI를 구축

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

  32. XML을 이용한 사용자 인터페이스 작성 • 앞에서 코드로 작성하였던 UI를XML로 표현하면 TextViewtv = newTextView(this); tv.setText("Hello, world!");

  33. XML을 이용한 사용자 인터페이스 작성 • UI 컴포넌트 들은 XML의 하나의 엘리먼트로표현된다. • TextView컴포넌트는 <TextView ... /> 엘리먼트로 표현된다.

  34. XML 파일의 분석 <?xmlversion="1.0"encoding="utf-8"?> <TextViewxmlns: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!"/>

  35. <TextView>의 어트리뷰트 설명

  36. XML • 시작 태그로 시작되어 종료 태그로 끝나는 논리적인 구성 요소를 엘리먼트(element) • <Greeting>Hello, world.</Greeting>가엘리먼트 • 어트리뷰트(attribute)는 엘리먼트의 속성으로서 “이름/값”의 쌍으로 구성 • <imgsrc="madonna.jpg" alt='by Raphael'/>에서는 img엘리먼트는src와 alt라는 2개의 어트리뷰트를 가진다.

  37. XML 파일의 위치 (/res/layout/main.xml)

  38. XML UI 파일과 Java코드와의 연결

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

  40. 코드에서 리소스를 참조하는 방법 • 앱에서 사용하는 resource들은 R 클래스에 정의됨 • 다시 각 타입별로 내부 클래스가 정의되어 있고 각각의 resource는 이 클래스 안에서 상수 ID가 부여됨 • attr/dimen/drawable/id/layout/menu/string

  41. 리소스 (예제 #3) • Android에서는 레이아웃, 이미지, 문자열 들을 리소스로 취급 drawable: 이미지 layout: layout (UI) values: 문자열 등 • Android에서는 가능하면 앱에서 사용하는 리소스들을 코드 바깥에 위치시킴

  42. 코드와 리소스를 분리하는 이유 • 안드로이드가 탑재된 장치들이 다양해지면서 언어나 화면 크기에 따라서, 리소스를 다르게 하는 것이 필요 • 코드는 프로그래머가 작성, UI는 디자이너가 작성 • 독립성: 개발/유지보수

  43. 문자열 리소스 • 문자열도 XML로 기술하는 것이 바람직하다. android:text=“Hello. World!” 대신에 android:text=“@string/hello_world” //@ 는resource폴더 참조

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

  45. 매니페스트 파일

  46. 매니페스트 파일 • 적재목록: 애플리케이션에 적재된 모든 컴포넌트를 기술함. AndroidManifest.xml • Android에게 애플리케이션의 컴포넌트들을 알려줌으로써 다른 애플리케이션이 내 컴포넌트를 실행할 수 있게함 -> intent (chap 11)

  47. 매니페스트 파일의 분석

  48. Summary • 디버깅 : p.98 ~ • 이클립스사용팁: p.101 ~ • 애플리케이션은 컴포넌트들의 조합으로 만들어진다. • 코드와 리소스는 철저하게 분리된다. • 코드와 리소스는 개발 도구에 의하여 자동으로 생성되는 R.java에 의하여 서로 연결된다.

More Related