안드로이드 리소스와 에셋

프로그래밍/Android 2013. 8. 26. 16:56

안드로이드 리소스와 에셋


리소스와 에셋

- 리소스와 에셋의 차이는 그리 크지 않다. 읽어 들이는 방법에 차이가 존재한다.

- 리소스는 컴파일된 R 클래스에 의해 쉽게 접근 가능하며 에셋은 AssetManager 를 사용해야 한다.


리소스와 국제화

res/anim/  애니매이션 프레임 또는 트윈드(tweened) 애니매이션 오브젝트

res/drawable/ .png, .9.png, .jpg 

※ 여기에 위치한 이미지는 aapt 도구에 의해 자동으로 최적화 된다. 예를 들어 256 컬러 이상이 요구되지 않는 

트루컬러 PNG는 컬러 팔레트를 가진 8-비트 PNG로 변환된다.

따라서 빌드 하는동안 변경된다. 변경되지 않도록 하기 위해서는 res/raw/ 폴더에 위치시키자

res/layout/ 스크린 레이아웃

res/values/ 기타 값을 정의하는 xml 파일들

array.xml 배열을 정의함, colors.xml 컬러 drawable 과 컬러 문자열 값을 정의함 Resources.getColor()

dimens.xml 크기 값을 정의함 Resources.getDimension()

string.xml 문자열 값을 정의함 Resources.getText()

styles.xml

res/xml/ Resources.getXML() 로 읽어들여질 수 있는 임의의 xml 파일들

res/raw/ Resources.openRawResource()


코드에서 리소스 사용

R.resource_type.resource_name

android.R.resource_type.resource_name



xml 파일에서 리소스 사용

android:textColor=”@color/opaque_red”

android:text=”@string/hello_world” />

android:textColor=”@android:color/opaque_red” // 시스템 리소스를 참조하기 위해서는 @android: 를 붙여준다.



리소스 선택

- 디바이스 상의 언어 설정, 하드웨어 설정 에 따라 사용할 리소스를 제공할 수 있다.

MyApp/

res/

values-en/

strings.xml

values-fr/

string.xml



각각의 설정에 따라 여러 타입의 수식어를 지원한다. 수식어(qualifier)는 -(대시) 로 구분되어진다.

MyApp/

res/

drawable-en-rUS-finger/

drawable-port/

drawable-port-mdpi/

drawable-qwerty/



수식어(Qualifier) 종류

MCC 와 MNC 디바이스의 SIM에 잇는 모바일 국가 코드(MCC : Mobile Coutry Code, MNC : Mobile Network Code)

언어와 지역 en-rUS, fr-fFR, es-rES , 대소문자 구분이 있다. 언어코드는 소문자, 국가코드는 대문자

스크린 크기 small, normal, large, xlarge

더 넓은 / 더 긴 스크린 long, notlong

스크린 오리엔테이션 port(세로, portrait), land(가로), square(정사각형)

스크린 픽셀 밀도 ldpi, mdpi, hdpi, xhdpi, nodpi

터치스크린 타입 notouch, stylus, finger

키보드 제공 여부 keysexposed(사용가능), keyshidden(없음), keyssoft( 소프트 키보드 사용가능)

텍스트 입력방법 nokeys, qwerty, 12key

네비게이션키 제공 여부 navexposed( 사용가능), navhidden( 없음)

터치스크린외 네비게이션 방법 nonav(없음), dpad(방향키), trackball(트랙볼), wheel(휠)

SDK 버젼



수식어는 위 표에 나와 있는 순서대로 -(대시) 를 사용해서 구성된다.

ex) drawable-en-rUS-large-long-port-mdpi-finger-keysexposed-qwerty-dpad



- 리소스 컴파일러는 대소문자를 구분하지 않는다


코드에서 리소스 레퍼런스

MyApp/res/drawable-port-mdpi/myimage.png


R.drawable.myimage (JAVA)

@drawable/myimage (XML)


: