Hello, World Bok, Jong Soon Jongsoon.bok@gmail.com www.javaexpert.co.kr
Hello, World
Hello, World (Cont.)
Hello, World (Cont.)
Hello, World (Cont.)
Hello, World (Cont.)
Hello, World (Cont.)
Hello, World (Cont.)
Hello, World (Cont.)
Hello, World (Cont.)
Hello, World (Cont.)
Hello, World (Cont.)
Hello, World (Cont.)
Hello, World (Cont.)
Hello, World (Cont.)
Hello, World (Cont.)
Application 구성요소 Android Application Java Code /src /gen Resource /drawable /layout /values Manifest AndroidManifest.xml
Application 구성요소 ( 계속 ) HelloWorldActivity.java 로직 / 사용자상호작용 R.java 메모리관리 HelloWorldActivity.java main.xml UI 설계 R.java strings.xml 리소스관리 main.xml strings.xml AndroidManifest.xml 애플리케이션기본정보 AndroidManifest.xml 장용식 김관옥 성낙현, Step by Step 안드로이드앱개발 ( 서울 :INFINITY BOOKS, 2011), p.67.
프로젝트구성 AndroidManifest.xml src/helloworldactivity.java gen/r.java assets res/drawable res/layout/main.xml res/values/strings.xml default.properties proguard.cfg
기본파일상호작용과실행원리 액티비티라벨 로직 / 사용자상호작용 HelloWorldActivity.java 액티비티생성 main.xml 레이아웃출력 ic_launcher.png 리소스관리 ( 이미지 ) R.Java main.xml 파일주소이미지리소스주소텍스트리소스주소 메모리관리 UI 설계 main.xml 레이아웃설계텍스트리소스사용 리소스관리 ( 텍스트 ) strings.xml 텍스트리소스정의 애플리케이션기본정보 AndroidManifest.xml 어플리케이션아이콘지정어플리케이션라벨지정액티비티레벨지정액티비티명지정 HelloWorld 장용식 김관옥 성낙현, Step by Step 안드로이드앱개발 ( 서울 :INFINITY BOOKS, 2011), p.97.
기본파일상호작용과실행원리 ( 계속 ) 액티비티라벨 로직 / 사용자상호작용 HelloWorldActivity.java super.oncreate(savedinstancestate) setcontentview(r.layout.main) 리소스관리 ( 이미지 ) ic_launcher.png UI 설계 main.xml LinearLayout TextView android:text @string/hello R.Java drawable ic_launcher 0x7f020000 layout main 0x7f030000 string hello 0x7f040000 app_name 0x7f040001 리소스관리 ( 텍스트 ) 메모리관리 strings.xml hello Hello World, app_name HelloWorld 애플리케이션기본정보 AndroidManifest.xml application android:icon @drawable/icon android:label @string/app_name activity activity:name HelloWorldActivity android : label @string/app_name HelloWorld 장용식 김관옥 성낙현, Step by Step 안드로이드앱개발 ( 서울 :INFINITY BOOKS, 2011), p.98.
프로젝트구성 ( 계속 ) AndroidManifest.xml 패키지이름, 버전정보, 어플리케이션이름 어플리케이션구성요소와각어플리케이션구성요소의속성이정의 어플리케이션에서사용하는권한, 최소요구 SDK 버전
프로젝트구성 ( 계속 ) AndroidManifest.xml : 프로젝트일반정보
프로젝트구성 ( 계속 ) AndroidManifest.xml
프로젝트구성 ( 계속 ) src/helloworldactivity.java Activity 는안드로이드어플리케이션에서하나의 화면 을구성하는구성요소 메인소스파일 코드직접작성 public void setcontentview(int layoutresid) public void setcotentview(view view)
프로젝트구성 ( 계속 ) gen/r.java : 툴이자동으로관리, 직접편집안됨.
프로젝트구성 ( 계속 ) assets : 리소스폴더, 비디오오디오파일저장 res/drawable : 이미지파일저장 default.properties : 프로젝트의빌드타겟이명시되어있다. proguard.cfg : 디컴파일방지를위한설정
프로젝트구성 ( 계속 ) res/layout/main.xml
프로젝트구성 ( 계속 ) res/layout/main.xml
프로젝트구성 ( 계속 ) res/values/strings.xml
프로젝트구성 ( 계속 ) res/values/strings.xml
Resource Source code 외의다른파일들 어플리케이션에서사용하는 image, sound, layout, string 등이포함 Source code 와는별도로존재 파일이름 : 영문소문자, 숫자, 밑줄 (_), dash(-) 로만가능 리소스를참조할때파일의이름으로참조함
Resource (Cont.) 문자열, 색상, 치수 (dimension) 값과같은단순리소스는 /res/values 에들어있다. 리소스파일들은 xml 태그를사용한다. 리소스는프로젝트빌드시어플리케이션패키지에포함된다. 문자열, 색상, 치수리소스는 [ 리소스편집기를이용해서관리하거나 xml 파일을직접편집할수있다.
Resource (Cont.) 리소스종류에따른저장위치 저장위치 res/anim res/drawable res/layout res/values res/xml res/raw 리소스종류 XML 형태로된애니메이션 이미지 (*.png, *.jpg, *.gif) 화면레이아웃 문자열, 배열등 XML 형태로된데이터 영상, 음악혹은위의형식에해당되지않는데이터
Resource (Cont.) 문자열 /res/values/strings.xml 작은혹은큰인용부호 (apostrophe,, ) 를포함한문자열은이스케이프처리하거나큰따옴표로감싸야한다.
Resource (Cont.) 색상 /res/values/colors.xml 안드로이드는 RGB 형식의 12 비트와 24 비트색상지원 형식 설명 예제 #RGB 12비트색상 #00F(blue) #ARGB 알파가포함된 12비트색상 #800F(blue, alpha 50%) #RRGGBB 24비트색상 #FF00FF( 자홍 ) #AARRGGBB 알파가포함된 24비트색상 #80FF00FF( 자홍, alpha 50%) 참고 : 색상선택기 ( http://html-colorcodes.info )
치수 Resource (Cont.) 컨트롤의크기지정을위한치수 /res/values/dimens.xml 측정유형 설명 단위문자열 픽셀 실제화면픽셀 px 인치 물리적인길이 in 밀리미터 물리적인길이 mm 포인트 흔히쓰는글꼴크기 (1/72 inch) pt 밀도독립적인픽셀 1 160dpi를기준으로한픽셀단위 dp 축척독립적인픽셀 2 가변글꼴표시에가장적합한단위 sp 1 Density-independent Pixels. 1in = 160dp, 2 Scale-independent Pixels
Resource (Cont.) 이미지 파일명은반드시소문자이어야한다. 파일명은문자, 숫자, 밑줄만가능 /res/drawable 지원되는이미지형식설명확장자 Portable Network Graphics(PNG) 권장형식 ( 무손실 ).png Nine-Patch Stretchable Images(PNG) 권장형식 ( 무손실 ).9.png Joing Photographic Experts Group(JPEG/JPG) 권장하지않는형식 ( 손실 ) Graphics Interchange Format(GIF) 지원되지만권장하지는않음.gif BitmapDrawable logobitmap = (BitmapDrawable)getResource().getDrawable(R.drawable.logo); 또는 ImageView logoview = (ImageView) findviewbyid(r.id.logoimageview); logoview.setimageresource(r.drawable.logo);.jpg
Resource (Cont.) Style & Theme View or Window 에적용할여러속성들을정의한리소스 비슷한속성들을개별적으로지정할때의불편함, 번거로움을피하고자사용 텍스트크기, 배경색상, 여백크기등다양한속성을한번에정의하여일관된 UI 적용에매우유용 적용범위에따라일부분을정의하면 Style 이고, 여러 Style 들을모아서전체 Style 로만든것이 Theme 이다.
Resource (Cont.) Style file res/values/styles.xml
Resource (Cont.) Style inheritance 부모 Style 이름. 자식 Style 이름
Resource (Cont.) Style inheritance Android System s Style inheritance
Style 적용하기 Resource (Cont.)
Style 적용하기 Resource (Cont.)
Resource (Cont.) Theme 테마는좀더넓은범위에적용 작성방법은스타일과동일 styles.xml 에추가 별도의파일생성없이 styles.xml 예제에엘리먼트추가 themes.xml 등의파일을따로만들어도상관없음
Resource (Cont.) Theme 적용하기 themes Activity 의속성에 theme 지정 Android System Theme 적용하기
Resource (Cont.) 국제화 1 를위한리소스 언어 : 두개의소문자로된 ISO 639-1 언어코드 ( 예 :ko, ja) 지역 : 소문자 r 뒤에대문자로된 ISO 3166-1 alpha-2 언어코드 ( 예 :rca, rgb) 화면방향 : port( 세로화면 ), land( 가로화면 ), square( 정방형화면 ) 픽셀밀도 : DPI(Dots Per Inch : 인치당픽셀수 ) 단위의픽셀밀도 ( 예 :92dpi) 터치형식 : notouch( 터치불가 ), stylus( 감압식 ), finger( 정전식 ) 키보드사용 : keysexposed( 키보드사용 ), keyshidden( 키도드사용안함 ) 키보드형식 : nokeys( 키없음 ), qwerty( 쿼티풀사이즈 ), 12key( 키패드타입 ) 방향키타입 : notouch( 방향키없음 ), dpad( 화살표키 ), trackball( 트랙볼 ), wheel( 휠 ) 화면해상도 : 큰치수 x 작은치수형태로표현된값 ( 예 :320x240, 800x480) 1 일반적으로단어가너무길기때문에 i18n, 즉 i 로시작하여중간에 18 개의문자가있고, n 으로끝나는단어라는뜻으로축약하여부르기도함.
Resource (Cont.) 국제화를위한리소스 사용예 drawable-en-rus 미국 ( 영어 ) 의 drawable drawable-ko-finger-320x240 한국어 - 정전식 -QVGA 의 drawable string-keyshidden 키보드가가려진경우표시되는문자열
Resource (Cont.) 국제화를위한리소스 : ISO 639-1 언어코드 언어 ISO 639-1 코드언어 ISO 639-1 코드 Arabic ar Greek el Bulgarian bg Italian it Chinese zh Japanese ja English en Korean ko Esperanto eo Latin la Finnish fi Portuguese pt French fr Russian ru German de Vietnamese vi 표성배 신성윤 서정만 장영현 하얀공저, 톡톡튀는어플개발을위한안드로이드프로그래밍 ( 경기 : 도서출판글로벌, 2011), p.138.
Resource (Cont.) 국제화를위한리소스 : ISO 3166-1 ALPHA-2 언어코드 국가 ISO 3166-1 alpha-2 코드 국가 ISO 3166-1 alpha-2 코드 United Arab Emirates AE Spain ES Argentina AR France FR Australia AU United Kingdom GB Brazil BR Italy IT Canada CA Japan JP Switzerland CH Korea, Republic of KR China CN Mexico MX Germany DE Russian Federation RU United States US South Africa ZA
Resource (Cont.) Source code 에서리소스참조하기 프로젝트에리소스를추가하면자동으로리소스의 id 가자동생성 참조방법 R. 리소스 _ 종류. 리소스 _ 이름 구문 R.string.hello R.layout.main R.drawable.icon R.raw.sound R.id.text android.r.id.text 의미이름이 hello 인문자열이름이 main 인레이아웃이름이 icon 인이름이름이 sound 인데이터 ID가 text 인리소스 ID 가 text인안드로이드시스템리소스
Resource (Cont.) System 리소스참조하기 Android System Resource 접근가능 다수의어플리케이션의공통적인 Look and feel 을표현하기위해접근가능 System resource 는 android 패키지에저장예 ) 시스템문자열리소스 : android.r.string String confirm = Resources.getSystem().getString(android.R.s tring.ok); 또는 @android:[ 리소스형식 ]/[ 리소스이름 ] @android:string/ok
Resource (Cont.) Source code 에서리소스참조하기 참조방법 String String mystr = getresource().getstring(r.string.hello);
Resource (Cont.) Source code 에서리소스참조하기 참조방법 String array String [] array = getresource().getstringarray(r.array.fruits);
Resource (Cont.) Source code 에서리소스참조하기 참조방법 String array int mycolor = getresource().getcolor(r.color.textcolor);
Resource (Cont.) Source code 에서리소스참조하기 참조방법 String array float mytextsize = getresource().getdimension(r.dimen.textpointsize);
Resource (Cont.) 리소스에서다른리소스참조하기 참조방법 @ 리소스 _ 종류 / 리소스 _ 이름 구문 @string/hello @layout/main @drawable/icon @raw/sound @id/text @android:id/text 의미이름이 hello 인문자열이름이 main 인레이아웃이름이 icon 인이름이름이 sound 인데이터 ID가 text 인리소스 ID 가 text인안드로이드시스템리소스
Resource (Cont.) 리소스생성하기 ADT 내의리소스생성마법사이용
Resource (Cont.)
Resource (Cont.) File : 새로생성할리소스파일명, 확장자 (*.xml) 까지입력해야함. Resource Type : 레이아웃, 메뉴등리소스유형선택
Lab1. 리소스추가하기 File : strings.xml Resource Type : Values
Lab1. 리소스추가하기 ( 계속 ) 1. Available Qualifiers : 語 Language 2. - > 3. Language : ko 語 ko
Lab1. 리소스추가하기 ( 계속 )
Lab1. 리소스추가하기 ( 계속 )
Lab1. 리소스추가하기 ( 계속 )
Lab1. 리소스추가하기 ( 계속 )
Emulator
Emulator (Cont.) 버튼 설명 홈언제든지홈스크린으로돌아온다. PC 키보드의키. MENU 메뉴출력. 스크린이잠겨있을때는잠금을푼다. 뒤로이전화면으로돌아간다. PC 키보드의키. 검색구글검색툴바를실행한다. PC 키보드의키. 통화전화걸기화면을실행한다. PC 키보드의키. 통화종료 통화종료. 통화중이아닐때는 PC 키보드의 키. 스크린을끈후잠근다. 방향키 4방향으로이동한다. PC 키보드의 키를 눌러도된다.
Emulator (Cont.) 버튼방향전환엔터카메라볼륨조정 설명 + / 현재선택된항목실행카메라를동작시킨다. + 볼륨을조정한다. UP : + Down : + 전원버튼전원을끈다. 에뮬레이터에서는화면을잠근다. Network 연결 / 끊기
Lab2
Lab3
Lab4
Lab5
Lab6
Lab7 : Style 김상형, 안드로이드프로그래밍정복개정판 1 권 ( 서울 : 한빛미디어, 2011), p.413.
Lab8 : Theme 김상형, 안드로이드프로그래밍정복개정판 1 권 ( 서울 : 한빛미디어, 2011), p.415.
Lab8 : System Theme 김상형, 안드로이드프로그래밍정복개정판 1 권 ( 서울 : 한빛미디어, 2011), p.416.