09 안드로이드 리소스

jihyo·2022년 7월 4일
0

Android

목록 보기
13/17

안드로이드 앱에서 사용되는 리소스는 2가지로 구분된다.

  • 앱 리소스
  • 플랫폼 리소스

앱 리소스

  • 앱 리소스 : 개발자가 직접 추가한 리소스로, res 폴더에 있는 것들이 그에 포함된다.

기본적으로 drawable, layout, mipmap, values가 있다. 이외에도 만들어서 쓸 수 있는데
기본적으로 생성되는 것을 포함하면 아래와 같다.

디렉터리 명리소스 종류
animator속성 애니메이션 XML
anim트윈 애니메이션 XML
color색상 상태 목록 정의 XML
drawable이미지 리소스
mipmap앱 실행 아이콘 리소스
layout레이아웃 XML
menu메뉴 규성 XML
raw원시 형태로 이용되는 리소스 파일
values단순값으로 이용되는 리소스
xml특정 디렉터리가 정의되지 않은 나머지 XML 파일
font글꼴 리소스

몇 가지 규칙이 있다.

  • 위 디렉터리 명은 임의로 바꿀 수 없고 하위 디렉터리 추가도 불가하다.
  • 리소스 파일명은 values의 파일을 제외하고 자바 네이밍 컨벤션을 따라야 하며 알파벳 대문자는 사용불가

규칙의 이유
그 이유는 리소스 디렉터리와 파일을 코드에서 그대로 사용하지 않고 R 파일에 식별자로 등록해서 사용하기 때문이다.

layout, mipmap 디렉터리는 위 표에서 명시된 것 이외의 설명은 필요하지 않기 때문에 넘어가겠다.

drawable

PNG, JPB, GIF, 9.PNG 파일들을 저장할 수 있고 XML로 작성된 이미지도 저장할 수 있다.

drawable에서 사용되는 XML 태그

  • <shape> : 도형을 의미. shape 속성을 이용해 도형의 타입을 지정할 수 있다.
    • 도형 타입은 rectangle, oval, line, ring 가 있고 android:shape="rectangle 로 사용
  • <corners> : 둥근 모서리를 그리는 데 사용. shape 값이 rectangle일 때만 적용
  • <gradient> : 그라데이션 색상 지정
  • <size> : 도형의 크기 지정
  • <solid> : 도형의 색상 지정
  • <stroke> : 도형의 윤곽선 지정

values

문자열, 색상, 크기, 스타일, 배열 등의 값들을 XML 파일로 저장한다.
01 values

values와 다른 디렉터리의 사용버에 차이가 있다.

다른 디렉터리

  • R 파일에 식별자로 추가되기 때문에 코드에서 구분해서 사용한다.
    • ex)R.layout.activity_main

values 디렉터리

  • R에 등록되지 않고 리소스 파일에 값을 지정한 태그의 name 속성값이 등록된다.

문자열 리소스

strings.xml

<resources>
	<string name="app_name">My Application</string>
    <string name="Hello">Hello, World!</string>
</resources>

레이아웃 XML

<TextView
	android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello" />

코드에서 사용

binding.textView.text = getString(R.string.hello)

색상 리소스

<resources>
  <color name="text_color">#FFFF00</color>
</resources>

크기 리소스

크기 리소스는 dimen 태그를 사용한다.

<resources>
  <dimen name="text_size">20dp</dimen>
</resources>

색상과 크기 리소스 사용

레이아웃 xml

<TextView
	android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    android:textColor="@color/text_color"
   	android:textSize="@dimen/text_size"/>

코드에서 사용

binding.textView.text = getString(R.string.hello)
binding.textView.setTextColor(ResourcesCompat.getColor(resources, R.color.text_color, null))
binding.textView.textSize = resources.getDimension(R.dimen.text_size)

플랫폼 리소스

앱 리소스와 다르게 안드로이드 플랫폼에서 제공하는 리소스로 프로젝트 탐색 창에서 [Packages] -> [Libraries] 에서 확인할 수 있다.

플랫폼 리소스도 R 파일에 등록된 식별자로 사용할 수 있다. 앱에 있는 리소스는 아니고 android.R 플랫폼 라이브러리에 등록되어 있다.

코드에서 사용

binding.imageView.setImageDrawable(ResourcesCompat.getDrawable(resources, android.R.drawable.alert_dark_frame, null))
binding.textView.text = getString(android.R.string.emptyPhoneNumber)

XML에서 사용할 때 플랫폼 리소스는 앱 리소스와 다르게 @android: 패턴을 사용한다.

XML에서 사용

<ImageView
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
    android:src="@android:drawable/resource_example" />

0개의 댓글