안드로이드에서 리소스란?
앱은 동작하면서 동적으로 발생하거나 변경되는 콘텐츠는 코드로 작성해야 합니다. 반대로 정적인 콘탠츠는 코드에 작성하지 않고도 리소스로 분리하여 외부 파일로 이용할 수 있습니다. 이처럼 리소스를 이용하면 코드를 작성할 때 더욱 간결하며 유지 보수하기도 편리합니다.
앱 리소스란 개발자가 직접 추가한 리소스를 의미합니다. 모듈 생성 시 오른쪽 그림과 같이 자동으로 res관련 디렉터리가 생깁니다. 기본적으로 4개의 디렉터리가 만들어지지만 리소스 파일의 종류는 더 많기 때문에 아래의 표와 같은 디렉터리를 res아래 만들어 쓸 수 있습니다. 참고로 리소스 디렉터리명은 고정이며 리소스 파일명은 values에 추가하는 파일을 제외하고는 모두 자바의 이름 작성 규칙 준수하여야 하고 알파벳 대문자를 사용할 수 없습니다.
디렉터리명 | 리소스 종류 |
animator | 속성 애니메이션 XML |
anim | 트윈 애니메이션 XML |
color | 색상 상태 목록 정의 XML |
drawable | 이미지 리소스 * PNG, JPG, GIF, 9.PNG 파일, XML로 작성한 이미지도 가능 |
mipmap | 앱 실행 아이콘 리소스 |
layout | 레이아웃 XML |
menu | 메뉴구성 XML |
raw | 원시 형태로 이용되는 리소스 파일 |
values | 단순 값으로 이용되는 리소스 문자열, 색상, 크기, 스타일, 배열 등의 값을 XML로 저장 |
xml | 특정 디렉터리가 정의되지 않은 나머지 XML 파일 |
font | 글꼴 리소스 |
<!-- xml로 작성한 이미지 -->
<shape xmlns:android="http: //schemas .android.com/apk/res/android"
android: shape="rectangle">
<gradient
android: startColor="#FFFF0000"
android: endColor="#80FF00FF"
android: angte="45" />
<cormmers android: radius="8dp" />
</shape>
<!-- drawable디렉토리의 이미지리소스사용 -->
<InageView
android: Layout_width="300dp"
android: Layout_height="38edp"
android: src="@drawable/gradient_box" />
XML 이미지 태그
디렉터리명 | 리소스 종류 |
<shape> | 도형을 의미하며 android:shape="rectangle"처럼 shape 속성을 이용해 도형의 타입을 지정. shape값은 rectangle,oval,line,ring중에서 선택할 수 있음 |
<corners> | 둥근 모서리를 그리는 데 사용. shape값이 rectangle일 때만 적용 |
<gradient> | 그러데이션 색상 지정 |
<size> | 도형의 크기 지정 |
<solid> | 도형의 색상 지정 |
<stroke> | 도형의 윤곽선 지정 |
값리소스 - values 디렉터리
values 디렉터리의 리소스 파일은 파일명이 R인 파일에 식별자로 등록되지 않고 리소스 파일에 값을 지정한 태그의 name 속성값이 등록됩니다.
XML에서 사용할때
EX) @color/txt_color
코드에서 사용할때
EX) R.color.txt_color
색상리소스 - color 디렉터리
color 디렉터리의 리소스는 특정 뷰의 상태를 표현하고 그 상태에 적용되는 색상을 등록
플랫폼 리소스 사용하기
안드로이드 플랫폼이 제공하는 리소스
android.R이라는 플랫폼 라이브러리의 R 파일에 등록
XML에서 사용할때
EX) @android:color/txt_color
코드에서 사용할때
EX) android.R.color.txt_color