반응형
안녕하세요 돼지왕 왕돼지입니다.
오늘은 안드로이드 프로젝트의 "res" 폴더에 해당하는 Resource ( 리소스 ) 에 대해 알아보겠습니다.
리소스에 대해 쭉 썰을 풀어봐~
안드로이드의 리소스는 코드에서 분리되어 xml로 정의된 형태이기 때문에 수정과 유지가 매우 쉽습니다.
drawable
: 이미지 파일, 도형을 정의하는 XML 파일로, getDrawable() 함수를 통해 resource 접근이 가능합니다.
layout
: 화면의 레이아웃을 저의합니다. 다시 말해, 뷰 그룹과 뷰 파생 클래스들의 배치 상태를 정의합니다.
values
: 문자열, 색상, 배열, 크기, 단순 drawable, 스타일 등 여러 기본 값들을 담고 있습니다.
getColor(), getText(), getString(), getDimension() 등을 통해 리소스 접근을 할 수 있습니다.
menu
: 메뉴 구성 파일.
xml
: 실행 중에 읽어서 사용할 임의의 xml 파일을 정의.
getXml() 을 통해서 리소스에 접근합니다.
raw
: 임의의 이진 파일들을 저장.
openRawResource() 를 통해 리소스에 접근.
[Asset은?]
anim
: 애니메이션 방식을 정의하는 xml 파일 저장
<resource 파일 파일명 권장 사항>
문자열 : strings.xml
색상 : colors.xml
스타일, 테마 : styles.xml
배열 : arrays.xml
크기 정보 : dimens.xml
resource 정의 xml 들의 기본 form 을 알려줘봐.
strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Widget!</string>
</resources>
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="textcolor">#0000ff</color>
</resources>
dimens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textsize">12pt</dimen>
</resources>
main.xml ( layout )
styles2.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"/>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="red15">
<item name="android:textColor">#ff0000</item>
<item name="android:textSize">15pt</item>
</style>
<style name-"yellow15italic" parent="@style/red15">
<item name="android:textColor">#ffff00</item>
<item name="android:textStyle">italic</item>
</style>
</resources>
styles2.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="mytheme">
<item name="android:windowNoTitle">true</item>
</style>
</resources>
Java 코드에서 리소스 사용은 어떻게 해?
샘플을 보시면 금방 이해하실 수 있을 것입니다.
Resources res = getResources();
TextView text = (TextView)findViewById(R.id.text);
String str = res.getString(R.string.textstr);
text.setText(str);
int textcolor = res.getColor(R.color.textcolor);
text.setTextColor(textcolor);
float textsize = res.getDimension(R.dimen.textsize);
text.setTextSize(textsize);
리소스 안에서 다른 리소스를 사용하는 경우도 많다던데?
당연히 많이 있습니다. 가장 흔하게 볼 수 있는 녀석들이 @drawable/icon 이나, @string/appname 따위인데, 그 형식은 다음과 같습니다.
@[패키지:/]타입/id
리소스 보면 디바이스나 국가별로 적용되는것도 뭔가 있던데?
네, 눈썰미가 좋으시네요. 다음과 같은 사항들에 대해 resource 를 잘못 구비해준다면, system이 이것들을 알아서 자동 매핑을 해주곤 합니다.
format : res/폴더-접미
언어 : ISO 639-1이 정의하는 두 자리 소문자 국가 코드. us, kr, fr, ja, ru 등
지역 : 소문자 r 다음에 대문자 두 자리로 된 지역 코드. rUS, rKR, rFE 등
화면 방향 : port, land, square
해상도 : 92dpi, 108dpi
터치 스크린 : notouch, stylus, finger
키보드 유무 : keysexposed, keyshidden
입력 장치 : nokeys, qwerty, 12key
네비 방법 : nonnav, dpad, trackball, wheel
화면 크기 : 320x240, 480x320 등. 가로 세로에 상관 없이 항상 큰 값이 앞에 나옴
- 여러 개의 접미어를 붙일 때는 대시(-)로 구분. 반드시 도표의 순서에 맞게 작성. (언어. 지역, 화면 방향 등의 순서로 와야 함)
- 모든 풀더는 같은 부모에 속해야 하며 중첩되어서는 안 된다.
- 접미는 대소문자를 구분. 한국어 레이아웃은 layout-kr (o), layout-KR (x)
- 한 환경에 대해서는 하나의 접미만 가능. layout-kr-en (x)
- 코드나 리소스에서 참조할 때는 접미를 붙이지 않는다. 접미는 운영체제가 리소스 선택시만 유효.
로그인 없이 추천 가능합니다. 손가락 꾸욱~
반응형
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Android/안드로이드] Relative Layout 관련 속성 ( Attribute ) (0) | 2012.02.27 |
---|---|
[Android/안드로이드] ImageView 속성 ( Attribute ) (0) | 2012.02.27 |
[Android/안드로이드] 타이머 구현하기 ( Timer ) (0) | 2012.02.27 |
[Android/안드로이드] Log ( 로그 ) 의 종류 및 활용. (6) | 2012.02.27 |
[Android/안드로이드] 이미지 버튼( Image Button ) 에 대해 알아보자. (0) | 2012.02.27 |
댓글