๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Android Studio

[Android ์•ฑ๊ฐœ๋ฐœ ์ž…๋ฌธ] ๋ฆฌ์†Œ์Šค ํŒŒ์ผ, ์ฝ”ํ‹€๋ฆฐ ์†Œ์Šค ํŒŒ์ผ (# ์ถ”๊ฐ€ํ•˜๊ธฐ)

by ์ ผ์ ผ39 2024. 3. 18.

2. ๋ฆฌ์†Œ์Šค ํŒŒ์ผ

    : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฆฌ์†Œ์Šค(ex. ์ด๋ฏธ์ง€ ๋˜๋Š” ๋ฌธ์ž์—ด)๋ฅผ ์ฝ”ํ‹€๋ฆฐ ์ฝ”๋“œ์—์„œ ๋ถ„๋ฆฌํ•˜๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์œ ์ง€/๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์„œ
        ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ ๋ณ€ํ™”(ex. ํ™”๋ฉด ํฌ๊ธฐ ๋ณ€ํ™” ๋˜๋Š”์‚ฌ์šฉ ์–ธ์–ด ๋ณ€๊ฒฝ)๋ฅผ ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ์—†์ด ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ์Œ

    // ex. ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ™”๋ฉด ํฌ๊ธฐ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ UI ๋ ˆ์ด์•„์›ƒ์„ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ๋กœ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜,
            ์–ธ์–ด ์„ค์ •์— ๋”ฐ๋ผ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด์„ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ๋กœ ์ œ๊ณต 

 

2. ๋ฆฌ์†Œ์Šค ํด๋”

1) drawable : ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค

2) layout : UI ๊ตฌ์„ฑ์— ํ•„์š”ํ•œ XML ๋ฆฌ์†Œ์Šค

3) mipmap : ์•ฑ ์•„์ด์ฝ˜ ์ด๋ฏธ์ง€

4) values : ๋ฌธ์ž์—ด ๋“ฑ์˜ ๊ฐ’์œผ๋กœ ์ด์šฉ๋˜๋Š” ๋ฆฌ์†Œ์Šค

 

// ex. activity_main.xml : res/layout ํด๋”์— ์œ„์น˜ํ•œ, ํ™”๋ฉด์˜ ๋ ˆ์ด์•„์›ƒ์„ ์ •์˜ํ•œ xml ํŒŒ์ผ
   

    // ConstraintLayout ์•ˆ์— ํ•˜๋‚˜์˜ TextView ์š”์†Œ๊ฐ€ ํฌํ•จ๋œ ํ™”๋ฉด ๋””์ž์ธ์„ ๋‚˜ํƒ€๋ƒ„
    // ConstraintLayout : ๋‚ด๋ถ€์— ํฌํ•จ๋˜๋Š” ์œ„์ ฏ์˜ ์œ„์น˜, ํฌ๊ธฐ๋ฅผ RelativeLayout๋ณด๋‹ค ์œ ์—ฐํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ฒฐ์ •ํ•˜๋Š” ๋ทฐ ๊ทธ๋ฃน
    // TextView๋Š” ๋ฌธ์ž์—ด์„ ํ‘œ์‹œํ•˜๋Š” ์œ„์ ฏ (android:text ์†์„ฑ์— ์ง€์ •๋œ ๋ฌธ์ž์—ด Hello World! ๋ฅผ ํ‘œ์‹œ)

 

3. ์ฃผ์˜

    1) res ํ•˜์œ„์˜ ํด๋”๋ช…์€ ์ง€์ •๋œ ํด๋”๋ช…(ex. drawable/, layout/ ... )์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

    2) ๊ฐ ๋ฆฌ์†Œ์Šค ํด๋”์— ๋‹ค์‹œ ํ•˜์œ„ํด๋”๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์—†์Œ

    3) ๋ฆฌ์†Œ์Šค ํŒŒ์ผ ๋ช…์—๋Š” ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ

    4) ํŒŒ์ผ-๋ฒ ์ด์Šค ๋ฆฌ์†Œ์Šค๋ช…์€ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž์™€ ์ˆซ์ž 0~9, _ ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ

 

4. aapt ๋„๊ตฌ

    : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•˜์—ฌ ์ปดํŒŒ์ผ ๋œ ๋ฆฌ์†Œ์Šค(Rํด๋ž˜์Šค์™€ ํŒจํ‚ค์ง€ ๋œ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ)์„ ์ƒ์„ฑํ•จ

    - R.java

        : aapt ๋„๊ตฌ์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ ํŒŒ์ผ

        - Rํด๋ž˜์Šค๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ kotlin ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋ฆฌ์†Œ์Šค ID๋ฅผ ์ •์˜

public final class R{
	...
	public static final class layout{
    	...
        public static final int activity_main=0x7f09001b;
        ...
    }
	...
}

 

 

3. ์ฝ”ํ‹€๋ฆฐ ์†Œ์Šค ํŒŒ์ผ

    : MainActivity.kt

    = ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์ฝ”ํ‹€๋ฆฐ ํŒŒ์ผ

 

1) ํŒจํ‚ค์ง€ ์ด๋ฆ„

    : MainActivity ํด๋ž˜์Šค๊ฐ€ ์†ํ•œ ํŒจํ‚ค์ง€

    - ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ์— ์„ค์ •๋œ ์ด๋ฆ„
    - ํŒจํ‚ค์ง€๋ช…์ด ์ค‘๋ณต๋˜๊ฒŒ ์ƒ์„ฑ๋  ์ˆ˜๋Š” ์—†์Œ

package com.jblee.helloworld

 

2) MainActivity ์•กํ‹ฐ๋น„ํ‹ฐ์— ๋Œ€ํ•œ ํด๋ž˜์Šค ์ •์˜

    : ์•ˆ๋“œ๋กœ์ด๋“œ ์•กํ‹ฐ๋น„ํ‹ฐ๋Š” Activity์˜ ์„œ๋ธŒํด๋ž˜์Šค์ž„

    - AppCompatActivity๋Š” Activity์˜ ์„œ๋ธŒํด๋ž˜์Šค๋กœ์„œ ํ•˜์œ„ ํ”Œ๋žซํผ ๋ฒ„์ „์„ ์ง€์› 

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

 

3) MainActivity ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ˆ˜ํ–‰๋˜๋Š” ๋ฉ”์†Œ๋“œ (์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ์ด ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์†Œ๋“œ)

    : ์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ์ด ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์†Œ๋“œ. ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์ˆœ๊ฐ„์— ๋”ฑ ํ•œ ๋ฒˆ ํ˜ธ์ถœ๋จ

    - ์ฃผ๋กœ ์•กํ‹ฐ๋น„ํ‹ฐ์™€ ๊ด€๋ จ๋œ ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” ๋ฐ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์„ค์ • ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•จ

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

 

4) activity_main.xml์— ์ •์˜๋œ ํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ์„ MainActivity์˜ ์ปจํ…์ธ ๋ทฐ๋กœ ์„ค์ •

    : R.layout.activity_main์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ด ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ์ฝ˜ํ…์ธ ๋ทฐ๋กœ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ

    - R.layout.activity_main์€ res/layout ํด๋”์˜ activity_main.xml ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ •์  ์ƒ์ˆ˜ (Rํด๋ž˜์Šค์—์„œ ์ •์˜๋จ)

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