일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- DART
- Flutter
- data
- tabbar
- Kotlin
- Compose
- Navigation
- activity
- appbar
- Button
- textview
- CustomScrollView
- scroll
- ScrollView
- drift
- 테스트
- livedata
- intent
- LifeCycle
- android
- textfield
- 안드로이드
- 앱
- 계측
- Coroutines
- viewmodel
- 앱바
- TEST
- Dialog
- binding
- Today
- Total
Study Record
앱 리소스와 관리 본문
😎 앱 리소스
앱을 만들 때 이미지나 아이콘, 파일 등 여러 가지 정적 콘텐츠를 리소스라고 부른다. ex) 비트맵, 레이아웃 정의, 문자열
리소스(문자열, 이미지 등)는 직접 코드에 정의하기 보다 유지 관리하기 쉬운 리소스 디렉터리를 사용할 수 있다. 이렇게 외부화한 리소스는 R 클래스에서 생성되는 리소스 ID 로 액세스 할 수 있다.
예를 들어, xml 파일에 리소스(문자열)를 외부화하지 않고 사용하는 예시이다.
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="사랑해" />
"사랑해" 문자열을 외부화하여 xml 파일에 사용하면 @string/[정의한 리소스 ID] 로 외부에서 정의한 문자열을 가져올 수 있다.
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/submit" />
앱에서 사용하는 문자열을 파일로 관리하는 디렉토리 하나를 신경 쓰는 것과 변경된 사항이 있을 때마다 xml 파일을 뒤져가며 수정하는 것을 생각하면 외부화하여 관리하는 것이 더 쉽다.
😎 리소스 종류
리소스에는 여러가지 종류가 있고 그 종류에 따라 지원되는 리소스 디렉터리가 있다.
디렉터리 | 리소스 유형 |
animator | 속성 애니메이션을 정의하는 xml 파일 |
anim | 트윈 애니메이션을 정의하는 xml 파일 |
color | 색상 상태 목록을 정의하는 xml 파일 |
drawable | 드로어블 리소스 하위 유형으로 컴파일되는 비트맵 파일 또는 xml 파일 ex) 비트맵(png, JPG, GIF), 도형, 나인-패치 등 |
mipmap | 런처 아이콘 밀도에 관란 드로어블 파일 |
layout | 사용자 인터페이스 레이아웃을 정의하는 xml 파일 |
menu | 메뉴를 정의하는 xml 파일 |
raw | 원시 형태로 저장되는 임의의 파일 |
values | 문자열, 정수, 색상 등 간단한 값을 포함하는 xml 파일 리소스 배열(arrays.xml) 색상 값(colors.xml) 크기 값(dimens.xml) 문자열 값(strings.xml) 스타일 값(styles.xml) |
xml | Resources.getXML() 을 호출하여 런타임에 읽을 수 있는 임의의 XML 파일 |
font | 글꼴 파일(OTF, XML) |
프로젝트에 직접 표시되는 파일 계층구조의 예시는 다음과 같다.
MyProject/
src/
MyActivity.java
res/
drawable/
graphic.png
layout/
main.xml
info.xml
values/
strings.xml
colors.xml
😎 리소스 ID
리소스 정보를 저장하는 xml 파일에 ID 를 부여해야 하는 값들이 있다.
ex) 문자열 값( res/values/strings.xml )
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello</string>
<string name="hi">@string/hello</string>
</resources>
name 값이 리소스 ID 값으로 사용된다. (hello, hi)
😎 리소스 엑세스
애플리케이션이 컴파일되면 aapt 가 R 클래스와 리소스 ID 를 자동으로 생성한다. aapt 가 생성한 R 클래스로 모든 리소스들을 액세스 할 수 있는데 R.[리소스 유형].[리소스 이름] 으로 접근할 수 있다.
- 리소스 유형 : 리소스는 drawable, string, color 등 리소스 유형으로 그룹화된다.
- 리소스 이름 : 확장자를 제외한 파일 이름이나 xml 파일의 android:name 값으로 정의된다.
따라서, res/drawable/my_icon.png 이라는 이미지 리소스가 있다면 R.drawable.my_icon 으로 접근할 수 있다.
R.drawable.my_icon
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello</string>
<string name="hi">@string/hello</string>
</resources>
res/values/strings.xml 파일에 정의된 리소스의 경우에는 다음과 같이 접근할 수 있다.
R.string.hello
R.string.hi
코틀린/자바로 작성된 코드에서는 위의 예시(R 클래스)로 접근할 수 있고 XML 파일에서는 @[리소스 유형]/[리소스 이름] 으로 접근할 수 있다.
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/submit" />
'안드로이드' 카테고리의 다른 글
[안드로이드] 매니패스트 개요 (0) | 2023.06.11 |
---|---|
다양한 픽셀 밀도 지원(기기에 따른 이미지 지원, sp, dp) (0) | 2023.06.10 |
개인 정보 처리 방침 (0) | 2023.05.20 |
[안드로이드] AlarmManager (0) | 2022.05.26 |
[안드로이드] TimePickerDialog 사용하기 (0) | 2022.05.26 |