[안드로이드] 리소스 사용하기

반응형





읽기전에 손가락 한번 클릭~ >_<

고마워요 ~ Chu ~ ♥


이어지는 글이 굉장히 늘어나 버렸습니다.-_-;
리소스 관련하여 여러가질 종합하다보니 너무나도 많네요...
아무래도 안드로이드에서 가장 중요한 부분이라 쭐이고 쭐여도 이정도 인듯;;;;




리소스 사용하기

리소스는 컴파일 시점에서 시스템은 프로그램에 있는 모든 리소스에 대한 식별자를 포함하는 R 클래스를 생성합니다.

이 R 클래스는 지원되는 리소스의 각 타입에 따른 하나씩의 서브 클래스를 포함하며, 각각의 클래스는 컴파일된 리소스에 대해 하나 또는 그 이상의 식별자를 가집니다. 이것은 코드에 그 리소스를 로드하기 위해 사용되어 집니다.

주의!
R 클래스는 자동으로 생성되며, 빌드 시점에 자동으로 갱신되기 때문에 절대로 편집하지 않아야 합니다!


< R 클래스의 생김새 >


코드에서 리소스 사용하기

코드에서 리소스를 사용하려면, 리소스 ID 와 리소스 타입을 알아야 합니다.

R.resourceType.resourceName 형식 : 직접 생성한 리소스 참조할 때
android.R.resourceType.resourceName : 미리 정의되어 있는 안드로이드 내의 리소스를 참조 할 때

위와같은 방식으로 리소스를 참조할 수 있습니다.

리소스 타입은 R 클래스의 서브클래스가 되며, 리소스명은 XML 에 정의된 속성이거나, 다른 파일 타입에 의해 정의된 리소스의 파일 이름입니다. 리소스 타입은 알맞게 R 클래스의 서브클래스로써 추가되어 집니다. 참 편하죠?

직접 생성한 어플리케이션 내의 리소스는 패키지 이름없이 참조합니다. ( R.xxx.xx )
반면에 안드로이드에 미리 정의된 표준 리소스는 ( android.R.xx.xxx ) 처럼 앞에 android 를 붙여야 참조할 수 있습니다.

리소스 참조하기

속성 또는 리소스로 제공되는 값도 참조할 수가 있습니다.
예를들어 색상값을 지정한 리소스가 있다면, 레이아웃에서 참조하여 색상 지정을 할 수가 있겠죠.



리소스 참조를 위해 제일 앞에 "@" 문자가 있는 점에 주목하세요.
그 다음, 텍스트는 ' @[package: ] type / name ' 형식이며, 이 소스에선 해당 패키지 내부에서 리소스를 참조하는 것이기 때문에 패키지를 지정하지 않은 것입니다.


시스템 리소스 참조를 위해서는 위에서 말한것처럼 패키지 이름을 써야합니다.


또한 문자열도 리소스로 관리하면 더욱 유용합니다.



그리고 리소스 상호간에도 리소스를 참조할 수가 있는데, 이미 존재하는 이미지에 대해 새로운 드로블 리소스를 만들면 아래와 같습니다.



테마 속성 참조하기

현재 적용되어 있는 테마의 속성값을 참조할 수는 없을까요?
물론, 할 수 있습니다.

단, 이것은 스타일 리소스와 XML 속성에서만 사용 가능합니다.
즉, 구체적인 값 대신에 현재 테마를 변경하여 UI를 커스텀하는 방식입니다. 예를들면 레이아웃에서 기본 시스템 테마의 표준 색상값 중.. 하나를 참조하여 텍스트 컬러를 지정하는 것과 같이 할 수 있죠


주목할 점은 ' @ ' 대신에 ' ? ' 문자를 사용한다는 점입니다.
이때 테마에서 찾을 속성의 이름을 제공해야 합니다. 테마에서 값을 찾는 ' ? ' 를 사용하는 것을 제외하면 ' @ ' 를 사용하는 구문과 동일하네요 ㅎ


시스템 리소스 사용하기

시스템에 포함된 리소스도 참조할 수 있겠죠???
이것은 어플리케이션 소스에서도 사용이 가능한데, 그런 리소스들은 모두 " android.R ' 이라는 클래스에 정의되어 있습니다.

예를들어 시스템에 정의된 테마를 스크린에 적용하면 아래와 같은 형식을 나타낼것 같네요


끝~~








리소스에 대한 내용은 게속 이어집니다 ㅎ

다음글은 이러한 리소스를 번갈아 가면서 사용하기~!
 


관련글




반응형

댓글

Designed by JB FACTORY