'res/layout'에 해당되는 글 1건

  1. 2012.07.27 안드로이드의 레이아웃 파일
728x90

 setContentView의 인수로 전달된 R.layout.main은 구체적으로 main.xml 레이아웃 파일을 의미

 마법사가 프로젝트를 생성할 때 기본 레이아웃 파일을 만들어주는데 패키지 탐색기에서 res/layout 폴더 안의

 main.xml 파일을 열어보면 아래와 같은 GUI 디자인 뷰가 열린다.

 

 

이 화면에서 마우스로 레이아웃을 편집하고 확인 할 수 있다.

아래쪽의 main.xml을 클릭하면 텍스트 형태로 xml 파일을 보고 편집 할 수 있다.

 

 

xml 파일이다, xml 헤더가 있고 utf-8로 인코딩 되어 있다.

루트 엘리먼트에는 android 네임 스페이스(android:)가 정의 되어 있는데 네임 스페이스란 어휘의 중복을 방지하기 위한 xml 표준 장치이다. 모든 속성명 앞에 이 네임스페이스가 붙는다.

 

이 파일의 구조는 현재 리니어 레이아웃에 텍스트 뷰를 하나 배치하고 택스트 뷰에 @string/hello 를 출력하라는 뜻이다.

리니어 레이아웃은 가장 흔하게 사용되는 레이아웃이며 차일드를 수평, 수직으로 나란히 배열하는 컨테이너이다.

여기서 @은 리소스에서 ID를 참조하라는 뜻이다. @srting/hello는 values 폴더의 strings.xml 파일에 정의되어 있다.

 

 

GUI 편집 화면이 열리는데 직관적이고 사용하기 쉽다.

아래쪽의 strings.xml 탭을 누르면 텍스트 형태로 전환된다.

 

 

 

두 개의 문자열이 정의되어 있다.

hello 문자열은 뷰 안에 출력되고 app_name 문자열은 타이틀 바에 표시된다.

이 문자열을 수정한 후 재실행(ctrl+s, ctrl+F11)하면 바뀐 문자열이 화면에 나타난다.

코드나 xml 파일에서 참조하는 리소스 ID는 R.java 파일에 정의된다.

이 파일에는 상수를 정의하는 클래스만 잔뜩 선언되어 있으며 코드는 전혀 없다.

 

이 파일은 개발툴이 자동으로 관리하므로 개발자가 임의로 편집해서는 안 되며 그럴 필요도 없다.

R클래스 안에 종류별로 drawable, layout, string 등의 정적 클래스를 정의하고 그 안에 main, hello등의 상수가

정의되어 있다. 그래서 소스에서는 복잡한 16진수를 쓸 필요없이 R.layout.main이라고만 쓰면 된다.

 

R.java 파일에 정의된 16진수의 실제값인 0x7f030000 등은 리소스 간의 구분을 위해 붙이는 일련 번호이며 개발툴이 알아서 관리한다. 내부적인 규칙에 의해 값이 중복되지 않도록 관리할 것이다. 값 자체는 큰 의미가 없기 때문에 몰라도 상관없으며 코드에서 Icon, main, hello 같은 명칭만 잘 사용하면 된다.

 

 

 

728x90
Posted by 정망스
,


맨 위로
홈으로 ▲위로 ▼아래로 ♥댓글쓰기 새로고침