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

반응형





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

고마워요 ~ Chu ~ ♥


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




리소스 사용하기

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

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

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


< R 클래스의 생김새 >


코드에서 리소스 사용하기

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

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

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

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

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

리소스 참조하기

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

<?xml version="1.0" encoding="utf-8"?>
<EditText id="text"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="@color/opaque_red"
android:text="Hello, World!" />
view raw gistfile1.xml hosted with ❤ by GitHub


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


시스템 리소스 참조를 위해서는 위에서 말한것처럼 패키지 이름을 써야합니다.
<EditText id="my_EditText"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="@android:color/opaque_red"
android:text="My Edit Text" />
view raw gistfile1.xml hosted with ❤ by GitHub


또한 문자열도 리소스로 관리하면 더욱 유용합니다.
<?xml version="1.0" encoding="utf-8"?>
<EditText id="string_EditText"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="@android:color/opaque_red"
android:text="@string/hello_world" />
view raw gistfile1.xml hosted with ❤ by GitHub



그리고 리소스 상호간에도 리소스를 참조할 수가 있는데, 이미 존재하는 이미지에 대해 새로운 드로블 리소스를 만들면 아래와 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<drawable id="my_background">
@android:drawable/theme2_background
</drawable>
</resources>
view raw gistfile1.xml hosted with ❤ by GitHub



테마 속성 참조하기

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

단, 이것은 스타일 리소스와 XML 속성에서만 사용 가능합니다.
즉, 구체적인 값 대신에 현재 테마를 변경하여 UI를 커스텀하는 방식입니다. 예를들면 레이아웃에서 기본 시스템 테마의 표준 색상값 중.. 하나를 참조하여 텍스트 컬러를 지정하는 것과 같이 할 수 있죠
<?xml version="1.0" encoding="utf-8"?>
<EditText id="text"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="?android:textDisabledColor"
android:text="@string/hello_world" />
view raw gistfile1.xml hosted with ❤ by GitHub


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


시스템 리소스 사용하기

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

예를들어 시스템에 정의된 테마를 스크린에 적용하면 아래와 같은 형식을 나타낼것 같네요
public class MyActivity extends Activity
{
public void onStart()
{
super.onStart();
setTheme(android.R.style.테마명);
}
}
view raw gistfile1.java hosted with ❤ by GitHub


끝~~








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

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


관련글




반응형

댓글

작가 남시언님의
글이 좋았다면 응원을 보내주세요!

Designed by JB FACTORY