본문 바로가기
안드로이드/리소스 관리

안드로이드 리소스 관리

by 김어찐 2022. 6. 23.
728x90

애플리케이션에서 사용하는 다양한 미디어 파일, 데이터 파일 등을 리소스 파일이라고 부른다.
안드로이드는 리소스 파일들을 res 폴더를 통해 관리한다.
안드로이드는 이미지와 xml 파일을 리소스로 관리하며 xml 파일을 안드로이드에서 정의한 데이터들을 관리하는 용도로 사용한다.
xml 파일로 관리되는 데이터들은 언어, 크기 등에 따라 단말기에 대응할 수 있도록 처리할 수도 있다.

 

문자열 관리

문자열, 문자열 배열을 xml에 등록해서 사용할 수 있다.
다국어 지원을 위해 사용한다.

 

색상 관리

색상을 xml에 등록해서 사용할 수 있다.
안드로이드는 단말기 제조사가 자신의 단말기에 안드로이드 OS를 넣게 된다.
이 때, 단말기마다 지원하는 색상, 처리 방식 등이 달라 원하는 색상이 나오지 않을 수도 있는데 이 처리를 안드로이드 OS가 해줄 수 있게 된다.

 

크기 관리

크기를 xml에 등록해서 사용할 수 있다.
모든 디스플레이 장비는 px 이라는 단위로 크기 등을 결정하게 된다. 
안드로이드는 다양한 단말기 때문에 px을 사용하면 크기가  다르게 나타날 수 있다. 
안드로이드는 가변형 단위들을 제공한다.

 

단위

px : 실제 사용할 픽셀의 개수
dp : 160ppi 액정에서 1dp = 1px
sp : 단말기에 설정되어 있는 글자 크기에 따라 가변 기본 크기에서 160ppi 액정에서 1sp = 1px
mm : 밀리미터
in : 인치
pt : 1pt = 1/72인치

 

package com.example.resourcemanagement

import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener {
//            textView.text = "반갑습니다"
//            textView.setText(R.string.str2)
//            val str2 = resources.getString(R.string.str2)
            val str2 = getString(R.string.str2)
            textView.text = str2
        }

         button2.setOnClickListener {
             val str3 = getString(R.string.str3)
             val str4 = String.format(str3,"홍길동",30)
             textView.text = str4
         }

        button3.setOnClickListener {
            val data_list = resources.getStringArray(R.array.data_array)

            textView.text = ""

            for (str1 in data_list) {
                textView.append("$str1\n")
            }
        }

        button4.setOnClickListener {
//            textView.setTextColor(Color.BLUE)
//            val color = Color.rgb(26,106,129)
//            val color = Color.argb(50,26,106,129)
//            val color = getColor(R.color.color2)
//            val color = getColor(R.color.color3)
            val color = getColor(R.color.color4)
            textView.setTextColor(color)
        }

        button5.setOnClickListener {
            val px = resources.getDimension(R.dimen.px)
            val dp = resources.getDimension(R.dimen.dp)
            val sp = resources.getDimension(R.dimen.sp)
            val inch = resources.getDimension(R.dimen.inch)
            val mm = resources.getDimension(R.dimen.mm)
            val pt = resources.getDimension(R.dimen.pt)

            textView.text = "px : $px\n"
            textView.append("dp : $dp\n")
            textView.append("sp : $sp\n")
            textView.append("inch : $inch\n")
            textView.append("mm : $mm\n")
            textView.append("pt : $pt\n")

            textView.textSize = 20 * sp
        }
    }
}

 

<resources>
    <string name="app_name">ResourceManagement</string>
    <string name="str1">안녕하세요</string>
    <string name="str2">반갑습니다</string>
    <string name="str3" formatted="false">이름은 %s 이고, 나이는 %d 살 입니다</string>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="data_array">
        <item>항목1</item>
        <item>항목2</item>
        <item>항목3</item>
        <item>항목4</item>
        <item>항목5</item>
        <item>항목6</item>
    </string-array>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<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>

    <!--  RGB   -->
    <color name="color1">#F00</color>

    <!--  ARGB  -->
    <color name="color2">#5F00</color>

    <!--  RRGGBB  -->
    <color name="color3">#00FF00</color>

    <!--  AARRGGBB  -->
    <color name="color4">#E61EC51E</color>

</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="px">1px</dimen>
    <dimen name="inch">1in</dimen>
    <dimen name="mm">1mm</dimen>
    <dimen name="pt">1pt</dimen>
    <dimen name="dp">1dp</dimen>
    <dimen name="sp">1sp</dimen>
</resources>
728x90