오늘은 안드로이드 정적 자원인 Resource에 대해 공부했다.
정적인 자원. 변경되지 않으므로 코드에 작성하지 않고 리소스로 분리해 외부 파일로 만들어 이용할 수 있다.
개발자가 직접 추가한 리소스
모듈 생성시 아래와 같이 res 폴더에 디렉터리 4개가 생성된다.
안드로이드 리소스 종류
이 디렉터리명은 고정. 하위 디렉터리나 임의의 디렉터리 불가능. 대문자 불가
디렉터리명 | 리소스 종류 |
---|---|
animator | 속성 애니메이션 XML |
anim | 트윈 애니메이션 XML |
color | 색상 상태 목록 정의 XML |
drawable | 이미지 리소스 |
mipmap | 앱 실행 아이콘 리소스 |
layout | 레이아웃 XML |
menu | 메뉴 구성 XML |
raw | 원시 형태로 이용되는 리소스 파일 |
values | 단순 값으로 이용되는 리소스. string, color, dimen, style |
xml | 특정 디렉터리가 정의되지 않은 나머지 XML 파일 |
font | 글꼴 리소스 |
화면을 구성하는 레이아웃 XML 파일을 저장하는 디렉터리
앱 설치시 나타나는 실행 아이콘의 이미지 리소스를 저장하는 디렉터리
글꼴 리소스를 저장하는 디렉터리.
TTF나 OTF 파일을 저장할 수 있다.
android:fontFamily="@font/nanum" 처럼 리소스를 사용할 수 있다.
이미지 리소스를 저장하는 디렉터리
PNG, JPG, GIF, XML(로 작성한 이미지) 파일 저장 가능
XML 이미지 태그
태그 | 설명 |
---|---|
shape | 도형의 타입 지정. rectangle, oval, line, ring |
corners | 모서리를 둥글게 할 때 사용. shape 값이 rectangle 일 때만 적용 |
gradient | 그라데이션 색상 |
size | 도형의 크기 |
solid | 도형의 색상 |
stroke | 도형의 윤곽선 |
값으로 이용되는 리소스를 저장하는 디렉터리
문자열, 색상, 크기, 스타일, 배열 등의 값을 XML로 저장 가능
values는 다른 디렉터리의 파일처럼 R.layout.activity_main 처럼 R로 경로를 사용하지 않는다.
따라서 파일명은 (strings.xml처럼 권장되지만) 자유이고, 대문자도 사용가능하다.
string
문자열<resources>
<string name="app_name">Ch9_Resource</string>
<string name="txt_data1">Hello</string>
<string name="txt_data2">World</string>
</resources>
color
색상 <resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
</resources>
dimen
크기<resources>
<dimen name="txt_size">20dp</dimen>
</resources>
<Textview
android:id="@+id/textview1"
android:text="@string/txt_data1"/
android:textColor="@color/txt_color"
android:textSize="dimen/txt_size"/>
binding.textView.text = getString(R.string.txt_data2)
binding.textView.setTextColor(R.color.txt_color)
binding.textView.textSize = resources.getDimension(R.dimen.txt_size)
values의 color 태그로 등록한 리소스는 색상 하나를 리소스에 등록해 사용할 때 유용하다.
반면, color 디렉터리의 색상 리소스는 특정 뷰의 상태를 표현하고 그 상태에 적용되는 색상을 등록할 때 유용하다.
ex) 버튼의 상태에 따른 색상을 하나의 xml에 등록해 color 디렉터리에 넣어 사용하면 편리
style 태그로 등록.
뷰에 설정되는 여러 속성을 스타일에 등록해 한꺼번에 적용하거나, 여러 뷰에 중복되는 속성을 스타일로 정의해 재사용할 때 사용
parent 속성으로 다른 스타일을 상속받아 재정의도 가능
<resources>
<style name="default_view">
<item name="android:layout_width">50dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">@color/white</item>
<item name="android:textStyle">bold</item>
</style>
<style name="active_view" parent="default_view">
<item name="android:layout_marginStart">30dp</item>
<item name="android:enabled">true</item>
</style>
</resources>
개발자가 리소스를 따로 준비하지 않아도 안드로이드 플랫폼이 제공하는 리소스
Project 탐색 창에서 Package로 설정하면 Libraries
항목에서 플랫폼 리소스를 확인할 수 있다.
플랫폼 리소스는 R이 아니라 android.R.~
경로로 이용할 수 있다.
XML에선 @android:drawable/save
처럼 @android:를 붙여 플랫폼 리소스를 사용한다.