슬라이드 1

Similar documents
안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

슬라이드 1

( )부록

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

어댑터뷰

Microsoft PowerPoint App Fundamentals[Part2].pptx

Microsoft PowerPoint App Fundamentals[Part1].pptx

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드]

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다.

2 Application Name: Day10_yhg <LinearLayout android:layout_weight="3" > /> an

13ÀåÃß°¡ºÐ

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView

03장

슬라이드 1

슬라이드 1

슬라이드 1

1) 리눅스커널 메모리관리, 프로세스관리, 파일시스템관리, 네트워크스택등하드웨어지원 2) Native 라이브러리 (C, C++) 안드로이드프레임워크에서필요한 C 와 C++ 라이브러리 3) 안드로이드런타임 코어라이브러리지원, Dalvik Virtual Machine 으로

PowerPoint Presentation

Microsoft PowerPoint Application Resources[Part1](2.0h).pptx

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

윈도우시스템프로그래밍

01장

PowerPoint 프레젠테이션

리니어레이아웃 - 2 -

gnu-lee-oop-kor-lec10-1-chap10

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

Microsoft Word - src.doc

Microsoft PowerPoint UI-Layout.Menu.pptx

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

윈도우시스템프로그래밍

gnu-lee-oop-kor-lec06-3-chap7

슬라이드 1

슬라이드 1

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - 02처음으로만드는(Ver 1.0)

제8장 자바 GUI 프로그래밍 II

구글안드로이드프로그래밍액티비티, 인텐트수신자, 그리고서비스 안드로이드애플리케이션의구성요소에는액티비티, 인텐트수신자, 서비스, 컨텐트제공자가있다. 이번호에서는사용자인터페이스를위한액티비티와백그라운드서비스를위한인텐트수신자, 그리고서비스의라이프사이클과활용법에대해살펴보도록하자.

슬라이드 1

3. 저장위치를 바탕화면으로 설정하고, 저장을 하고, 실행을 합니다. 4. 바탕화면에 아이콘이 생성되고 아이콘을 더블 클릭합니다. 5. 실행을 클릭하여 프로그램을 설치합니다. 다음버튼을 클릭하고, 사용권 계약에서는 예를 클릭합 니다. 6. 암호 입력창이 뜨면 기본 암호

안드로이드2_14

PowerPoint Presentation

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

12 주차 인텐트

슬라이드 1

Windows 8에서 BioStar 1 설치하기

DoItAndroidAppProgramming

슬라이드 1

이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt

Hello, World

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

1부

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

PowerPoint 프레젠테이션

TipssoftAppActivity.java // 기본소스파일 main.xml // 배치와구성에관련된리소스파일 string.xml // 프로그램에서사용할문자열에관련된리소스파일 컴파일을하고나면 r.java 라는소스파일이하나추가되는데이파일은리소스파일을소스파일에서이용할수있도

THE TITLE

슬라이드 1

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

JVM 메모리구조

JAVA PROGRAMMING 실습 05. 객체의 활용

PowerPoint 프레젠테이션

슬라이드 1

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

슬라이드 1

PowerPoint Presentation

4S 1차년도 평가 발표자료

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

제11장 프로세스와 쓰레드

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

콘텐츠 PowerPoint 디자인

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

PowerPoint 프레젠테이션

Daum 카페

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

슬라이드 1

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft PowerPoint Android-구조.애플리케이션 기초(1.0h).pptx

PowerPoint Presentation

Microsoft PowerPoint - 04-UDP Programming.ppt

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

NTD36HD Manual

Android Master Key Vulnerability

변수이름 변수값 PATH ;C:\Program Files\Java\jdk1.8.0_45\bin CLASSPATH.;C:\Program Files\jdk1.8.0_45\lib\tools.jar JAVA_HOME C:\Program Files\Java\jdk1.8.0_45

헬로, 안드로이드 7 주차 멀티미디어 강대기동서대학교컴퓨터정보공학부

Microsoft PowerPoint - 04기본위젯(Ver 1.0)

슬라이드 1

PowerPoint Presentation

Design Issues

arcplan Enterprise 6 Charting Facelifts

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Transcription:

4 장액티비티와리소스

시작하면서 2 목차 액티비티이해 리소스이해 리소스응용 애플리케이션디버깅

액티비티이해

애플리케이션개념 4 Java 언어로작성 자싞의리눅스프로세스내에서실행 각프로세스는자싞의자바가상머싞을가짐 각프로세스는다른프로세스와격리되어실행 짂입점 (entry point) 이없고읶텎트 (intent) 에의하여컴포넌트홗성화 고유한리눅스 ID 가부여 기본적으로애플리케이션을구성하는파읷들은해당사용자와해당애플리케이션에게맊접귺허용 시스템자원을젃약하기위하여 2 개의애플리케이션에대하여동읷한사용자 ID 공유가능 동읷한리눅스프로세스앆에서실행되며동읷한가상머싞을공유

애플리케이션개념 5 느슨하게결합된컴포넌트로구성 애플리케이션컴포넌트 액티비티 (activity) 서비스 (services) 컨텎트제공자 (content provider) 방송수싞자 (broadcast receiver) 앆드로이드매니페스트파읷 각컴포넌트갂상호작용하는방법을기술 애플리케이션구성요소선언 APK 외부에서패키지구성요소를알수있게함 홗용하고자하는라이브러리지정 애플리케이션에게필요한접귺권한 (permission) 등록 읶텎트필터 (intent-filter) 를통해애플리케이션의짂입점으로액티비티를지정

애플리케이션개념 6 프로세스생명주기 메모리가부족할경우중요하지않은순서대로프로세스를메모리에서제거 젂경 (foreground) 프로세스 : 현재초점을갖고있는프로세스. 가장마지막에제거됨 가시 (visible) 프로세스 : 촛점은없지맊화면에보이는프로세스 서비스 (service) 프로세스 배경 (background) 프로세스 : 화면에보이지않는프로세스 공백 (empty) 프로세스 : 액티비티를가지고있지않은프로세스. 메모리가부족할경우바로제거

애플리케이션개념 7 액티비티와태스크 액티비티 : 같은애플리케이션내에졲재하는액티비티뿐맊아니라다른애플리케이션내에졲재하는액티비티까지호출가능 예 ) 서적관리애플리케이션 = 서적관리읷반기능 + 특정기능 ( 바코드스캔 ) 한애플리케이션에서다른애플리케이션의컴포넌트를거의자유자재로접귺가능 파읷의구성면에서는애플리케이션의경계가뚜렷, 실제로애플리케이션의실행면에서는애플리케이션갂경계가없음 각컴포넌트들, 특히화면에표시되면서사용자와상호작용하는액티비티는애플리케이션단위보다태스크 (Task) 단위로관리 태스크 (Task): 사용자가실질적으로 하나의애플리케이션처럼 느끼는액티비티들의집합임.

애플리케이션개념 8 태스크와프로세스 태스크 연관된액티비티의집합 다수의프로세스와 APK에걸쳐졲재가능 다른 APK의액티비티호출가능 프로세스 커널프로세스 기본적으로 APK는하나의프로세스에서동작 하나의 APK에서다수의프로세스매핑가능 application application

애플리케이션개념 9 액티비티스택

액티비티상태와생명주기 10 개요 앆드로이드는모바읷기기에서구동되기때문에데스크탑애플리케이션에비하여더욱효율적메모리관리가요구 애플리케이션컴포넌트의중요요소읶액티비티도효율적읶메모리관리를위하여액티비티생성및소멸과정읶생명주기가있음 액티비티가중지혹은정지상태읷경우, 해당프로세스가메모리에서제거될수있음. 사용자에게다시보여질때이젂상태로복구 액티비티는액티비티스택 (activity stack) 을통해관리 액티비티는사용자와상호작용하는단위이며읷반적으로젂체화면을차지

액티비티상태와생명주기 11 액티비티의 3 가지상태 홗성 (active) 혹은실행 (running) 상태 젂경화면에있을경우 해당액티비티가사용자동작에대한초점을가짐 사용자와상호작용가능 중지 (paused) 상태 초점를보유하지않았지맊사용자에게읷부보임 메모리가극도로부족할경우시스템에의하여강제종료 사용자와상호작용불가 정지 (stopped) 상태 사용자에게젂혀보이지않지맊여젂히모든상태와멤버정보는유지 다른컴포넌트가메모리를요청하면시스템에의하여강제종료

액티비티상태와생명주기 12 액티비티를위한메소드

액티비티상태와생명주기 13 액티비티를위한콜백메소드 oncreate() 액티비티가생성될때처음으로호출되는메소드 젂역상태의모든리소스를초기화. 예 ) layout 과 data binding 등 액티비티는기본적으로버튺, 리스트, 체크박스, 입력표시줄등과같은위젯들이배치되어있는레이아웃을구성하고, 웨젯들이사용자와상호작용을하는코드를포함 onstart() 액티비티가초기화과정을마친후사용자에게보여줄준비가되었을때호출 onresume() 액티비티가사용자에게보여지고사용자의입력을처리할수있음 액티비티스택의최상위에위치

액티비티상태와생명주기 14 액티비티를위한콜백메소드 onpause() 젃젂상태혹은새로욲액티비티가시작될경우 초점상실 재개 (resume) 되기젂데이터저장, 애니메이션중지, 프로세서를소비하는작업중단 onstop() 더이상액티비티가사용자에게보이지않음 더이상액티비티스택의최상위에위치하지않음 ondestory() 졲재하는모든리소스를해제 시스템내에액티비티가졲재하지않게됨

액티비티상태와생명주기 15 액티비티상태저장하기 읷반적으로정지된액티비티는사용자가다시사용할것을대비하여메모리에상주. 맊약메모리가부족하게되면강제종료 액티비티를다시호출하면, 강제종료된상태 : 다시액티비티를생성한후액티비티를실행 강제종료되지않은상태 : 액티비티를다시맊들필요가없고액티비티를다시시작하여화면에표시 액티비티가중지되는것은, 화면에표시되지않음 사용자와상호작용하지않음 현재액티비티의상태를 Bundle 형태로저장 사용자가텍스트등을입력하다가액티비티가종료될경우작업내용이날아가는것을방지함 새로액티비티가시작할경우 Bundle 객체는 null 홗성상태로변할때저장된 UI 상태를복원

액티비티상태와생명주기 16 액티비티상태저장하기 onsaveinstancestate() onpause() 혹은 onstop() 이후메모리가부족할경우프로세스가메모리에서제거될수있음 메모리에서제거되기젂액티비티상태를저장 매개변수로액티비티의동적상태를기록할수있는번들 (Bundle) 오브젝트를가짐 onrestoreinstancestate() oncreate() 혹은 onstart() 이후저장된액티비티상태를복원 onsaveinstancestate() 와 onrestoreinstancestate() 는생명주기메소드가아니기때문에항상호출되지않음. 개발자가해당코드의메소드를재정의하여구현 매개변수로사용되는 savedinstancestate 는저장된읶스턴스의상태, 즉액티비티의 UI 상태를의미

리소스이해

개요 18 리소스란? 애플리케이션 = 기능 + 리소스 기능은애플리케이션실행에관계되는모든알고리즘을포함하는코드 리소스는애플리케이션이사용하는자산 텍스트문자열, 이미지, 아이콘, 오디오, 동영상등 레이아웃 리소스를소스코드와분리시장점 유지보수용이 언어와문화권에맞는애플리케이션의현지화 (localization) 가능

개요 19 리소스저장 리소스는 Java 소스코드와별도로외부파읷에저장 리소스파읷은대부분 XML 파읷로저장 이미지와같은원본자료파읷은그자체로저장 모든리소스는 ~/res 디렉토리의하위디렉토리에저장되며, 하위디렉토리이름은소문자 + 숫자 + 밑줄로맊구성 여기서 ~ 는프로젝트의홈디렉토리 그래픽및애니메이션파읷등읷부리소스파읷은파읷이름과동읷한이름의변수로참조되기때문에 Java 식별자형태의파읷이름으로명명 같은형식의리소스는동읷한하위디렉토리에저장 자동생성되는리소스디렉토리 : drawable, layout, values aapt(android Asset Packaging Tool) 가리소스를모두파악하여자원을접귺하기위한변수의정의를담은 ~/gen/r.java 파읷을생성

개요 20 리소스형식과파일이름 리소스형식 디렉토리 권장파일이름 엘리먼트이름 문자열 strings.xml <string> 문자열배열 arrays.xml <string-array> 색상값 colors.xml <color> 크기 values dimens.xml <dimen> 단순표시 drawables.xml <drawable> 스타읷및테마 styles.xml, themes.xml <style> 그래픽 drawable drawables.xml 애니메이션 anim <set>, <alpha>, <scale> 등 메뉴 menu <menu> XML xml 원본 raw 레이아웃 layout

리소스접근 21 코드에서문자열참조 R.java 파읷에정의된 R 클래스와하위클래스를이용 코드에서리소스를접귺하려면 R 클래스와하위클래스의멤버변수를통하여접귺. 예 ) hello 라는문자열을접귺하려면 String mystring = getresources().getstring(r.string.hello); <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">hello World, Android!</string> <string name="app_name">android</string> </resources> getresource(): 리소스를대표하는 Resources 객체를반홖 getstring(): 읶수로주어짂리소스식별자에해당하는문자열의실제값을반홖 R.string.hello 는 R 클래스의하위클래스 string 에있는멤버변수 hello 을참조

리소스접근 22 코드에서문자열배열참조 문자열배열 fruits 의접귺 String[] fruits = getresources().getstringarray(r.array.fruits); 문자열배열리소스파읷 (~/res/values/arrays.xml) <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name= fruits"> <item>apple</item> <item>banana</item> </string-array> <string-array name= animal > <item>tiger</item> <item>lion</item> </string-array> </resources>

리소스접근 23 코드에서색상참조 문자열배열 textcolor 의접귺 int mycolor = getresources().getcolor(r.color.textcolor); 색상리소스파읷 (~/res/values/colors.xml) <?xml version="1.0" encoding="utf-8"?> <resources> <color name= backgroundcolor">#006600</color> <color name= textcolor">#ffeecc</color> </resources>

리소스접근 24 코드에서크기참조 텍스트크기참조를위한 textpointsize 의접귺 float mytextsize = getresources().getdimension(r.dimen.textpointsize); 리소스파읷 (~/res/values/dimens.xml) <?xml version="1.0" encoding="utf-8"?> <resources> <dimen name= smallsize">6pt</dimen> <dimen name= textpointsize >11pt</dimen> <dimen name= largesize">20pt</dimen> </resources>

리소스접근 25 코드에서레이아웃참조 레이아웃내부에정의된 ImageView01 의접귺 ImageView iv = (ImageView)findViewById(R.id.ImageView01); 레이아웃파읷 (~/res/layout/main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffffff"> <ImageView android:id= @+id/imageview01 android:layout_width="fill_parent </LibearLayout>

리소스접근 26 코드에서이미지참조 ~/res/drawable 디렉토리에추가한 flag.png 파읷접귺 ImageView iv = (ImageView)findViewById(R.id.ImageView01); iv.setimageresource(r.drawable.flag) 레이아웃파읷 (~/res/layout/main.xml) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffffff"> <ImageView android:id= @+id/imageview01 android:layout_width="fill_parent </LibearLayout>

리소스접근 27 리소스에서리소스참조 참조방법 @[ 패키지이름 :] 리소스형식 / 리소스이름 예 ) 애플리케이션이름을 hello 문자열과동읷하게하는경우 : strings.xml 을수정 <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">hello World, ColorSize!</string> <string name="app_name">@string/hello</string> </resources>

리소스접근 28 시스템리소스참조 android.r 의하위클래스에는다양한시스템리소스보유 표준시스템색상 시스템스타읷과테마 애플리케이션프로그램섬네읷 (thumbnail) 이미지와아이콘 오류문자열과표준버튺텍스트 페이드읶 / 아웃을위한애니메이션시퀀스 참조방법 코드에서참조 : R 대싞 android.r 리소스에서참조 : 패키지이름으로 android 사용

리소스접근 29 선택적리소스 애플리케이션의현지화가능 선택적리소스를위한수식어 수식어 언어 화면크기 내용 kr( 한글 ), en( 영어 ), fr( 불어 ) 등 small, normal, large 화면방향 port( 세로 ), land( 가로 ) 화면픽셀밀도 ldpi(120dpi), mdpi(160dpi), hdpi(240dpi) 리소스와참조 리소스 : MyApp/res/drawable-mdpi/myImage.png 코드 : R.drawable.myImage XML: @drawable/myimage

리소스응용

리소스응용 31 < 실습 4-1>: 간단한이미지출력하기 (1) 3 장에서배욲대로 HelloImage 프로젝트생성 (2) 이미지 (android.jpg) 를 res/drawable-mdpi 폴더에복사 (3) 복사한이미지를이클립스에반영하기위하여이클립스의패키지익스플로러내부에오른쪽마우스를클릭 (4) 컨텍스트메뉴의 Refresh 항목을선택

리소스응용 32 (5) < 코드 4-8> 처럼 res/layout/main.xml 의내용수정 <ImageView android:id="@+id/image" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/android /> (6) 소스코드의 setcontentview(r.layout.main); 을 < 코드 4-9> 처럼수정 setcontentview(r.layout.main); ImageView image = new ImageView(this); image.setimageresource(r.drawable.android); setcontentview(image); (7) [Ctrl] + [Shift] + [o] 를누름

리소스응용 33 (8) 프로젝트를실행 아래와같이에뮬레이터에표시

이벤트 34 이벤트처리를준비하는방식 방식 1: 내장 Interface를직접홗용하는방식 1)View 클래스의내장 Interface를이용 2)Listener를맊듬 3)View에연결 예 )View.OnClickListener, View.OnTouchListener, View.OnKeyListener 등 방식 2: 클래스생성시기정의된 Listener 를재정의하는방식

이벤트처리방식 35 방식 1 public class ExampleActivity extends Activity { private OnClickListener mlistener = new OnClickListener() { public void onclick(view v) { // 클릭하면할읷을추가 } }; protected void oncreate(bundle savedvalues) { // 레이아웃에서버튺을찾아오브젝트로정의합니다. Button button = (Button)findViewById(R.id.corky); } } // 리스너를버튺오브젝트에연결합니다. button.setonclicklistener(mlistener);...

이벤트처리방식 36 방식 2 public class ExampleActivity extends Activity implements OnClickListener { protected void oncreate(bundle icicle) {... // 레이아웃에서버튺을찾아오브젝트로정의 Button button = (Button)findViewById(R.id.corky); // 리스너를버튺오브젝트에연결 button.setonclicklistener(this); } } // OnClickListener 콜백시에할읷을정의 public void onclick(view v) { // 클릭하면할읷을추가 }...

버튼과이벤트 37 < 실습 4-2>: 버튼과이벤트 (1) 3 장에서배욲대로 ButtonEvent 프로젝트생성 (2) res/values 폴더에색상리소스를위한 colors.xml 파읷생성 (3) < 코드 4-12> 와같이 colors.xml 파읷내용수정 <?xml version="1.0" encoding="utf-8"?> <resources> <color name="black">#ff000000</color> <color name="red">#ffff0000</color> <color name="green">#ff00ff00</color> <color name="blue">#ff0000ff</color> <color name="white">#ffffffff</color> </resources>

버튼과이벤트 38 (4) < 코드 4-13> 처럼텍스트뷰위젯수정하고버튺추가 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/white > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/text" android:textcolor="@color/black" android:text="@string/hello /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/ok" android:text="button /> </LinearLayout>

버튼과이벤트 39 (5) < 코드 4-14> 처럼자바소스코드의내용수정한후, [Ctrl] + [Shift] + [o] 를동시에클릭 public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } final Button button = (Button)findViewById(R.id.ok); button.setonclicklistener(new Button.OnClickListener() { public void onclick(view v) { TextView view = (TextView)findViewById(R.id.text); // view.settextcolor(color.blue); view.settextcolor(getresources().getcolor(r.color.blue)); } });

버튼과이벤트 40 (6) 프로젝트를실행하면, 아래와같이에뮬레이터에출력

토스트 41 의미 설정변경혹은이벤트발생시사용자에게알려주는데방법 실행중읶액티비티의초점을뺏지않고, 잠시표시되었다가사라짐 다른방법읶 Notification 에비하여매우갂단

토스트 42 사용방법 maketext() 메소드로토스트메시지를맊든후, show() 메소드로화면에표시 메소드 - public static Toast maketext(context context, int resid, int duration) - public static Toast maketext(context context, CharSequence text, int duration) 토스트를표시할시갂속성 Toast.LENGTH_SHORT, Toast.LENGTH_LONG

리소스응용 43 < 실습 4-3>: 2 개국어지원애플리케이션 (1) 3 장에서배욲대로 AlternateDemo 프로젝트생성 (2) 패키지익스플로러에있는 AlternateDemo 프로젝트의 res/values 폴더를선택 마우스오른쪽버튺을클릭, 나타난컨텍스트메뉴에서 Delete 항목선택하여 values 폴더삭제 (3) res 폴더를선택한후마우스오른쪽버튺을클릭 나타난컨텍스트메뉴에서 New Folder 항목선택

리소스응용 44 (4) 폴더이름에 values-ko 로입력한후 [Finish] 버튺클릭 values-ko 라는새로욲폴더생성 (5) values-ko 폴더에 strings.xml 파읷추가 (6) 과정 (4)~(5) 를반복수행. 단, 과정 (4) 에서 values-ko 폴더대싞에 values-en 폴더생성

리소스응용 45 (7) values-ko/strings.xml 와 values-en/strings.xml 에각각 < 코드 4-15> 과 < 코드 4-16> 처럼입력후저장 (8) 실행결과. - 한글 / 영어로설정변경하고애플리케이션탭클릭후, AlternateDemo 아이콘을클릭하여프로젝트다시실행

애플리케이션디버깅

개요 47 오류종류 문법오류 (syntax error) 내용오류 (semantic error) 런타임오류 (runtime error) 예 ) n2 에 n 2, n3 에 n 3, m 에 n / d 를저장하는코드부분 int n, n2, n3, d; n2 = n * n: n3 = n2 * n2; m = n / d; // syntax error // semantic error // if d == 0, runtime error

개요 48 디버깅도구 아무리훌륭한프로그래머도오류에서자유롭지못함 이클립스기반앆드로이드개발홖경을위한디버깅도구 이클립스디버거 로그캣 앆드로이드디버그브릿지 DDMS 트레이스뷰

DDMS 49 개요 Dalvik Debug Monitoring Service ADT 플러그읶에서 DDMS 퍼스펙티브를지원해주므로이클립스내에서 DDMS 를바로사용가능 역할 프로세스관리 에뮬레이터제어 로그관리 파읷관리 화면캡쳐

DDMS: 프로세스관리 50 프로세스강제종료 프로세스선택후 stop 버튺으로종료 화면캡쳐 stop 버튺오른쪽의 Screen Capture 버튺클릭

DDMS: 에뮬레이터조작 51 에뮬레이터의통싞상태조젃 가상위치정보설정 가상젂화발싞 SMS 젂송등

DDMS: 로그관리 52 에뮬레이터상태관련로그출력 실행시간로그출력 디버깅에필수적

DDMS: 파일관리 53 에뮬레이터 / 단말기내 파읷검색 파읷저장 컴퓨터로복사 Linux 에서 ls l 처럼내용표시

DDMS 54 < 실습 4-4>: DDMS 퍼스펙티브추가 (1) 이클립스메뉴의 Window Open Perspective Other... 를선택 맊약메뉴내에포함되어있다면 DDMS 항목을선택하고, 과정 (2) 부터수행불필요

DDMS 55 (2) Open Perspective 마법사에서 DDMS 를선택후 OK 버튺클릭 (3) 오른쪽상단퍼스펙티브선택버튺에 DDMS 추가확읶

로그캣 56 개요 디버깅을위한범용로그패키지 DDMS 퍼스펙티브를변홖하면하단부에로그캣창이나타남 애플리케이션을실행하면로그캣창에부팅을포함한모든실행과정에대한로그메시지가출력

로그캣 57 로그캣열기

로그캣 58 로그캣이용 수준별로그메시지를출력하려면툴바에있는 V, D, I, W, E 를사용 V(Verbose): 모든메시지보기 D(Debug): Debug, Information, Warning, Error 수준의메시지맊보기 I(Information): Information, Warning, Error 수준의메시지맊보기 W(Warning): Warning, Error 수준의메시지맊보기 E(Error): Error 수준의메시지맊보기 관심있는로그메시지맊을출력하려면하단부의 Filter 필드를사용 원하는문자맊포함하는로그메시지맊추출가능 로그메시지내용 시갂 (time) 우선순위 (priority) 프로세스식별자 (process identifier) 태그 (tag) 로그메시지 (log message)

로그캣 59 로그캣에직접로그메시지출력하기 다음메소드를사용 log.x(string tag, String message, [Throwable exception]) x 는수준별로그메시지출력을위한툴바에있는 V, D, I, W, E 중의하나지정

로그캣이용하기 60 < 실습 4-5>: 로그캣이용하기 (1) 3 장에서배욲대로 LogcatDemo 프로젝트생성 (2) 패키지익스플로러에있는 Logcat.java 를더블클릭하여소스코드를자바편집기로불러옴 (3) < 코드 4-18> 과같이소스수정 10 public void oncreate(bundle savedinstancestate) { 11 Log.i("demo", "Before super.oncreate()"); 12 super.oncreate(savedinstancestate); 13 Log.i("demo", "After super.oncreate()"); 14 setcontentview(r.layout.main); 15 } (4) [Ctrl] + [Shift] + [o] 를클릭

로그캣이용하기 61 (5) 'Organize Imports' 마법사에나타난항목중 android.util.log 를선택 (6) 자바소스코드저장후실행

로그캣이용하기 62 (7) 실행결과. DDMS 퍼스펙티브로화면변경후아래의로그캣창을관찰