꿈꾸는 엘프

 살아질 것인가. 살아갈 것인가.
이글루스 | 로그인
메뉴릿
카테고리
전체
Essay(내글)
Money(재테크)
Books(감상)
Books(추천도서)


WoodWork(목공 이야기)
Life Style(라이프스타일)


TokTokLab(모바일개발)
Transpedia(통번역)


I Want it(갖고 싶은 것들)
Like it (즐겨쓰는 모든것)
Go ! (즐겨찾기)
미분류
Profile

現톡톡랩 대표
前트랜스피디아 대표
前아침데이타시스템 과장(금융리스크 관리 컨설팅 및 개발)
前SK커뮤니케이션즈 메신저 개발팀 대리(NateOn3.7/4.0/Global Version개발)
前마켓포인트 신제품(전문가용실시간금융정보시스템) 개발 TF팀
박백민의 증권분석
Sugar Candy Mountain Lab

최근 등록된 덧글
좋은 글 감사합니다!!
by EE at 01/08
오랫동안 안드로이드 개발했지..
by 감사 at 05/08
좋은 글 잘보고 갑니다. 오래..
by ㄳㄳ at 05/07
똑같이 블로그를 하는 입장에..
by kwwon at 11/13
감사합니다. 정말 좋은자료네..
by 냐츠 at 06/26
포토로그

나의엘프의 포토로그
태그
펜션 아이콘사이즈 공간 주식 보유세 응암2구역 원목 안드로이드 응암1구역 티크 투자설명회 테라스가든 개발 모바일 어플개발 주택가격 스마트폰 집값 타운하우스 전세 메조트론 부동산대책 상태바사이즈 사이즈 부동산 누진세 내이글루결산 쎌바이오텍 전세대책
전체보기
최근 등록된 트랙백
garcinia cambogia fruit
by
garcinia cambogia
by
garcinia cambogia wikipe..
by
garcinia cambogia weight ..
by
http://helenmccrory.org/
by
buy pure garcinia cambo..
by
예비 창업자 & 소기업 사장이..
by 도서출판 부키
기본을 보면 미래가 보인다 2 -..
by 이글루스 블로거들의 살아있는..
왜 우리는 책을 읽어야 하는가? ..
by Fly, Hendrix, Fly
함정-으로 이어질 블로그링
by blogring.org
이전블로그
more...
이글루 파인더

rss

skin by 狂風
[안드로이드] 2.2 Hello world 파헤치기

2. 예제로 안드로이드 맛보기

2.1 모든 개발의 시작... Hello world

2.2 Hello world 파헤치기

 * 들어가는 말 : Hello world가 찍힌 화면을 얼마나 빨리 보느냐가 중요한 것이 아닙니다. 본격적인 공부에 앞서, Hello world 하나를 가지고 얼마나 많은 것들을 눈치채고 구동원리를 이해하느냐가 중요합니다. 별 것 없습니다. 차근차근 하나씩 뜯어보면 됩니다. 자.. 시작할까요?

 * 둘러보기
 복잡하게 소스부터 들여다 볼 필요는 없습니다. 전체적으로 한번 쭉 둘러봅시다. 일단 폴더들부터 훑어 봅시다. 
 src : example.HelloWorld/HelloWorld.java 가 보입니다. 폴더 이름도 그렇고, 패키지별로 소스를 작성하는 위치인가 봅니다.
 gen : [Generated Java Files]라고 되어 있는 것을 보니 자동생성되는 내용이 있나 봅니다. 직감적으로 아직 자세히 보지 않아도 될 것 같습니다.
 Android 2.2 : android.jar 파일이 보입니다. 아무래도 안드로이드 2.2 라이브러리겠지요?
 assets : 비어있습니다. 잘 모르겠습니다만, 어쨌든 비어 있으니 Hello world를 찍는 데에는 필요가 없나 봅니다.
 res : 일단 res라는 이름으로 보아 리소스들이 저장될 것 같습니다. 그럼 하위폴더를 한번 볼까요? drawable-XXX, layout, values... 아하! 눈치빠른 개발자라면 벌써 감이 올 것입니다. 순서대로 이미지 리소스, 화면정의, 변수 정의 정도일 것 같습니다.

 * UI : 모든 것은 눈에 보이는 것부터
 자, 이제 본격적으로 파헤쳐 본다. 눈에 보이는 것부터 하는 것이 직관적이고, 그저 둘러보는 것만으로도 본능적으로 알 수 있기 때문에 좋다고 생각한다. drawable은 이미지 저장소 같으니, layout폴더부터 보자. layout/main.xml파일을 열면 아래와 같이 Hello, world라는 글자가 찍히도록 한 장본인이 바로 main.xml임을 알 수 있다.
[그림13]
 가장 바깥에 LinearLayout태그가 보이고, 그 안에 TextView라는 태그가 보인다. 이름만 보아도 LinearLayout은 내부에 아이템을 일렬로 배치할 수 있는 컨테이너임을 알 수 있다. TextView는 말그대로 글자가 찍히게 해주는 아이템이다. 내부를 보면 android:text="@string/hello" 라는 부분이 보이는데, 화면에 찍힌 "Hello World, HelloWorld!"와는 다른 것을 알 수 있다. 어디엔가 @string에 해당하는 정의값이 있고, 그 안에 hello라는 이름을 가진 스트링이 있어야 할 것이다. 알겠는가? res 폴더를 둘러봤을 때 values라는 이름의 폴더가 있었다. 뭔가 변수를 정의할 것 같은 이름이다. 아니나 다를까, strings.xml이 존재한다.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, HelloWorld!</string>
    <string name="app_name">HelloWorld</string>
</resources>

아하! 드디어 범인을 찾아 냈다. 아니나 다를까, name="hello"요 값은 Hello World, HelloWorld!인 녀석이 있다. 이렇게 values/strings.xml파일에 미리 정의된 문자열을 저장해서 재사용하면 될 것이다. 기왕 보는 김에, 아랫줄에는 app_name이라는 이름을 가진 녀석이 있다. 그렇다 이건 화면에 어플리케이션 이름이 보여야 하는 곳에 사용하면 될 것이다. 이렇게 추리를 해 냈으면, 확인을 위해 바꿔보고 싶은 충동이 일긴 하지만, 앞으로도 확인해야 할 것은 많다. 이것은 거의 자명하기 때문에 그냥 넘어가겠다.

자, 그럼 어디엔가에 이 main.xml을 사용해서 화면을 띄우는 소스가 있을 것이다. 설마하니, 첫 화면은 무조건 main.xml만 열리게 되어 있진 않을 것이 아닌가. 둘러봤던 기억으로, 이 예제에 소스라고는 src/example.HelloWorld/HelloWorld.java밖에 없었으니, 한번 열어보자.
[그림14]
[그림14]에는 여느 언어의 UI개발에서도 볼 수 있을 만한 onCreate함수가 눈에 보인다. 딱 보아도 layout/main.xml을 연결할만한 소스는 setContentView(R.layout.main); 이 유일하다. "layout/main.xml"처럼 경로가 아니라 "R.layout.main"으로, java의 객체 변수에 접근하듯이 작성되어 있다. 이름이 R.layout.main 인 것으로 보아, R이라는 객체에 layout변수 내부에 main.xml에 대한 접근 정보가 저장되는 것 같다. 그렇다면 자동생성되었다는 것인데, 그렇다. 아까 둘러보았던 폴더 중에 gen 폴더에 [Generated Java Files]라는 코멘트가 붙어 있었다. 바로 살표보자.
[그림14]
 추측한대로, R이라는 class객체의 정의가 되어 있고, 그 안에 layout 객체가 있고, 또 그 안에 int main=0x7f030000; 이라고 변수가 정의되어 있다. 앗 그런데 위아래를 보니 drawable, string 이렇게 두가지가 보인다. 어디서 많이 본 듯한데... 아하! res폴더 내부 폴더의 이름이다. 또한, 아까 둘러보았던 strings.xml 에서 보았던 app_name과 hello변수도 여기 보인다. 이 변수를 java소스에서 사용하려면 R.string.hello 와 같은 형식으로 사용하면 될 것 같다.

 지금까지, Hello, world 예제 소스를 파헤쳐 보았다. 자 어떤가? 이정도면 간단한 Hello, world 예제에서 얻은 수확이 크지 않은가? 앞으로는 이 Hello, world를 변경해 가며, 잘 따라오기만 하면 안드로이드의 동작을 이해할 수 있도록 하겠다. 일방적으로 동작에 대해서 설명한 내용은 책들도 많고, 안드로이드 공식사이트(http://developer.android.com)를 참고하기 바란다.

by 나의엘프 | 2010/10/12 10:33 | TokTokLab(모바일개발) | 트랙백 | 덧글(2)
트랙백 주소 : http://myelf.egloos.com/tb/2694155
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by Load at 2010/11/02 22:57
와우.. 혼자 안드로이드 공부하는데 답답했는데.
정말 속이 뻥 뚫릴 정도로 잘 설명해주시네요 ㅜㅜㅋ
Commented by 나의엘프 at 2010/11/02 23:48
별 말씀을요..^^ 내가 아는 것을 글로써 설명하는 것이 얼마나 어려운 일인가를 깨닫고 있는 중입니다... 그래도 조금이나마 도움이 되는 분들이 있으니 행복할 따름입니다.

:         :

:

비공개 덧글


◀ 이전 페이지 다음 페이지 ▶