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

Study/Android

[์•ˆ๋“œ๋กœ์ด๋“œ ์ฝ”ํ‹€๋ฆฐ] 6. ๋ ˆ์ด์•„์›ƒ(3) - ๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ/์ปจ์ŠคํŠธ๋ ˆ์ธํŠธ ๋ ˆ์ด์•„์›ƒ(์ฒด์ด๋‹, ๊ฐ€์ด๋“œ๋ผ์ธ)/+ ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ํ™œ์šฉํ•˜๊ธฐ(์ž๋™์ €์žฅ, ์ฝ”๋“œ์ž๋™์™„์„ฑ, ๋””๋ฒ„๊น…)

๋ ˆ์ด์•„์›ƒ

 

๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ(GridLayout)

- ๊ฒฉ์ž(grid) ๋‚ด๋ถ€์˜ ์…€์— ์ž์‹ ๋ทฐ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ทฐ ๊ทธ๋ฃน

- ํ…Œ์ด๋ธ” ๋ ˆ์ด์•„์›ƒ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ, ๊ฐ๊ฐ์˜ ์ž์‹ ๋ทฐ๊ฐ€ ์ž์‹ ์˜ ์œ„์น˜์™€ ์ฐจ์ง€ํ•˜๋Š” ์…€์˜ ๊ฐœ์ˆ˜๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์ง€์ • ๊ฐ€๋Šฅ

 

<GridLayout> ์ž์ฒด์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์†์„ฑ

- rowCount: ํ–‰์˜ ์ˆ˜

- columnCount: ์—ด์˜ ์ˆ˜ 

- orientation: ๊ทธ๋ฆฌ๋“œ๋ฅผ ์ˆ˜ํ‰ ๋ฐฉํ–ฅ์œผ๋กœ ์šฐ์„ ํ•  ๊ฒƒ์ธ์ง€, ์ˆ˜์ง ๋ฐฉํ–ฅ์œผ๋กœ ์šฐ์„ ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ • 

 

๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ ์•ˆ์— ํฌํ•จ๋œ ์œ„์ ฏ์— ์„ค์ •ํ•˜๋Š” ์†์„ฑ

- layout_row: ์ž์‹ ์ด ์œ„์น˜ํ•  ํ–‰ ๋ฒˆํ˜ธ(0๋ฒˆ๋ถ€ํ„ฐ ์‹œ์ž‘)

- layout_column: ์ž์‹ ์ด ์œ„์น˜ํ•  ์—ด ๋ฒˆํ˜ธ(0๋ฒˆ๋ถ€ํ„ฐ ์‹œ์ž‘)

- layout_rowSpan: ํ–‰์„ ์ง€์ •๋œ ์ˆ˜๋งŒํผ ํ™•์žฅํ•จ

- layout_columnSpan: ์—ด์„ ์ง€์ •๋œ ์ˆ˜๋งŒํผ ํ™•์žฅํ•จ

- layout_ gravity: ์ฃผ๋กœ fill, fill_vertical, fill_horizontal ๋“ฑ์œผ๋กœ ์ง€์ •

    - layout_rowSpan์ด๋‚˜ layout_ columnSpan์œผ๋กœ ํ–‰ ๋˜๋Š” ์—ด์ด ํ™•์žฅ๋˜์—ˆ์„ ๋•Œ ์œ„์ ฏ์„ ํ™•์žฅ๋œ ์…€์— ๊ฝ‰ ์ฑ„์šฐ๋Š” ํšจ๊ณผ๋ฅผ ๋ƒ„

 

 


ํ”„๋ ˆ์ž„ ๋ ˆ์ด์•„์›ƒ(FrameLayout)

- ๋ ˆ์ด์•„์›ƒ ์•ˆ์˜ ์œ„์ ฏ์„ ์™ผ์ชฝ ์ƒ๋‹จ๋ถ€ํ„ฐ ๊ฒน์ณ์„œ ์ถœ๋ ฅํ•จ 

 

ํ”„๋ ˆ์ž„๋ ˆ์ด์•„์›ƒ์˜ ์†์„ฑ 

- foreground: ํ”„๋ ˆ์ž„๋ ˆ์ด์•„์›ƒ์˜ ์ „๊ฒฝ ์ด๋ฏธ์ง€๋ฅผ ์ง€์ •ํ•จ 

- foregroundGravity: ์ „๊ฒฝ ์ด๋ฏธ์ง€์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•จ 

    - fill, right, left, top, bottom ๋“ฑ์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•จ

 


์ปจ์ŠคํŠธ๋ ˆ์ธํŠธ ๋ ˆ์ด์•„์›ƒ(ConstraintLayout)

- ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๋ณธ ๋ ˆ์ด์•„์›ƒ

- ํ™”๋ฉด์— ๋ฐฐ์น˜๋˜๋Š” ์œ„์ ฏ๋“ค ์‚ฌ์ด์— ๊ฐ„๋‹จํ•œ ์ œ์•ฝ์กฐ๊ฑด ์„ค์ •๋งŒ์œผ๋กœ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•จ

- ์ƒ๋Œ€ ์œ„์น˜ ์ง€์ •

    - ์ฃผ์–ด์ง„ ์œ„์ ฏ์„ ๋‹ค๋ฅธ ์œ„์ ฏ์— ์ƒ๋Œ€์ ์œผ๋กœ ๋ฐฐ์น˜ํ•จ

 

 


๊ธฐ๋ณธํ™”๋ฉด - ๋ ˆ์ด์•„์›ƒ ์—๋””ํ„ฐ

ํŒ”๋ ˆํŠธ ์ฐฝ

- ํŒ”๋ ˆํŠธ ์ฐฝ์€ ๋ ˆ์ด์•„์›ƒ์„ ๋””์ž์ธํ•  ๋•Œ ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ๋ทฐ๋ฅผ ์ œ๊ณตํ•จ

 

์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ ์ฐฝ

- ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ์ฐฝ์—์„œ ๋ ˆ์ด์•„์›ƒ์˜ ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ์Œ

    - ConstraintLayout์— TextView๊ฐ€ ๋ฐฐ์น˜๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Œ

 

UI ํŽธ์ง‘(๋””์ž์ธ) ์ฐฝ

- UI ํŽธ์ง‘์ฐฝ์€ ๋ทฐ๋ฅผ ๋ฐฐ์น˜ํ•˜์—ฌ ๋ ˆ์ด์•„์›ƒ์„ ์ž‘์„ฑํ•˜๋Š” ํ™”๋ฉด์ž„

- ์ƒ๋‹จ ํˆด๋ฐ”์˜ ๊ฐ€์žฅ ์™ผ์ชฝ์— ์žˆ๋Š” ๋ณด๊ธฐ ๋ชจ๋“œ๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ์•„์ด์ฝ˜(ํŒŒ๋ž€ ๋ ˆ์ด์–ด ์•„์ด์ฝ˜)์„ ํด๋ฆญํ•˜๋ฉด Design, Blueprint, Design + Blueprint ์„ธ ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ

- Design ๋ชจ๋“œ๋Š” ๋””์ž์ธ์„ ์œ„์ฃผ๋กœ ํ‘œ์‹œํ•˜๊ณ , Blueprint ๋ชจ๋“œ๋Š” ์ œ์•ฝ์„ ์œ„์ฃผ๋กœ ํ‘œ์‹œํ•จ

+) ํ˜„์žฌ ์‚ฌ์šฉ ๋ฒ„์ „์˜ ๋ชจ์Šต

 


์•กํ‹ฐ๋น„ํ‹ฐ(Activity)

- ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ปดํฌ๋„ŒํŠธ

- ์•ฑ์„ ์‹คํ–‰์‹œ ๋ณด์—ฌ์ง€๋Š” ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜

- ์•ฑ์€ ํ•œ ๊ฐœ ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์•กํ‹ฐ๋น„ํ‹ฐ๋กœ ๊ตฌ์„ฑ

 

์•กํ‹ฐ๋น„ํ‹ฐ ํด๋ž˜์Šค

- ์•กํ‹ฐ๋น„ํ‹ฐ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ์˜ Activity ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•œ ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธ

- Activity, FragmentActivity, AppCompatActivity ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ์•กํ‹ฐ๋น„ํ‹ฐ ํด๋ž˜์Šค ์ค‘์—์„œ ํ˜„์žฌ๋Š” ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด AppCompatActivity๋ฅผ ์‚ฌ์šฉ

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

 


์ปจ์ŠคํŠธ๋ ˆ์ธํŠธ ๋ ˆ์ด์•„์›ƒ

์ฒด์ด๋‹(Chaining)

- ์ปจ์ŠคํŠธ๋ ˆ์ธํŠธ๋กœ ์—ฐ๊ฒฐ๋œ ์œ„์ ฏ๋ผ๋ฆฌ ์„œ๋กœ์˜ ์œ„์น˜๊ฐ’์„ ๊ณต์œ ํ•˜์—ฌ ์ƒ๋Œ€์ ์ธ ๊ฐ’์œผ๋กœ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•˜๋„๋กํ•จ

 

์ฒด์ธ์œผ๋กœ 4๊ฐœ์˜ ๋ฒ„ํŠผ ์—ฐ๊ฒฐ → ํ™”๋ฉด์„ ๋Œ๋ ค๋„ ์ƒ๋Œ€์ ์œผ๋กœ ์ผ์ •ํ•œ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ๊ฐ€์ง 

 

๊ฐ€์ด๋“œ๋ผ์ธ(GuideLine)

- ์ปจ์ŠคํŠธ๋ ˆ์ธํŠธ ๋ ˆ์ด์•„์›ƒ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด์กฐ ๋„๊ตฌ

- ๊ฐ€๋กœ์„ธ๋กœ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ํ™”๋ฉด ์ž„์˜์˜ ์œ„์น˜์— ๋“œ๋ž˜๊ทธํ•˜๋ฉด ๋ ˆ์ด์•„์›ƒ์— ๋ฐฐ์น˜๋˜๋Š” ์œ„์ ฏ์— ๊ฐ€์ƒ์˜ ์•ต์ปค ํฌ์ธํŠธ๋ฅผ ์ œ๊ณต

 


์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ํ™œ์šฉํ•˜๊ธฐ

์ž๋™ ์ €์žฅ(Auto Save)

- ์ž‘์„ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ €์žฅ๋˜๊ธฐ์— ๋”ฐ๋กœ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†์Œ

- ์ž๋™ ์ €์žฅ ์˜ต์…˜์€ ๋ฉ”์ธ ๋ฉ”๋‰ด์˜ [File] – [Settings]๋ฅผ ์„ ํƒํ•˜๋ฉด ๋‚˜ํƒ€๋‚˜๋Š” ์„ธํŒ… ์ฐฝ์˜ [System Settings]์—์„œ ์„ ํƒ ๋˜๋Š” ํ•ด์ œ

 

์ฝ”๋“œ ์ž๋™ ์™„์„ฑ(Code Completion)

- ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋จ

- ์•ž์ž๋ฆฌ ๋ช‡ ๊ธ€์ž๋งŒ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ๊ธ€์ž๊ฐ€ ํฌํ•จ๋œ ์ฝ”๋“œ๋ฅผ ๋‚˜์—ดํ•ด์ฃผ๋Š” ์ฝ”๋“œ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ

- ์˜ˆ) ‘layout’๊นŒ์ง€ ์ž…๋ ฅํ•˜๋ฉด ‘layout’์ด ํฌํ•จ๋œ ์ด๋ฆ„์ด ๋‚˜์—ด๋˜๋Š”๋ฐ ๋งˆ์šฐ์Šค ์Šคํฌ๋กค์„ ์œ„์•„๋ž˜๋กœ ์›€์ง์—ฌ ํ•„์š”ํ•œ ์ด๋ฆ„์„ ์„ ํƒํ•˜๋ฉด ๋จ

- ์ฐพ๊ณ ์ž ํ•˜๋Š” ์ด๋ฆ„์ด ๊ฐ€์žฅ ์œ„์— ํ‘œ์‹œ๋œ๋‹ค๋ฉด ๊ทธ๋ƒฅ Enter ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ์ž…๋ ฅ

 

๋””๋ฒ„๊น…(Debugging)

- ์—๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์‹คํ–‰๋œ ์ƒํƒœ์—์„œ ํŽธ์ง‘๊ธฐ ์ฐฝ ์ขŒ์ธก์— ์žˆ๋Š” ์ˆซ์ž ์˜†์„ ํด๋ฆญํ•˜์—ฌ ์ค‘๋‹จ์ (Breakpoint)์„ ์ฐ์œผ๋ฉด ํ•ด๋‹น ๋ผ์ธ๋ถ€ํ„ฐ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ถ„์„

- ์ค‘๋‹จ์ ์„ ์‚ฌ์šฉํ•ด์„œ ์•ฑ์„ ๋””๋ฒ„๊น…ํ•˜๋ ค๋ฉด ์ค‘๋‹จ์ ์„ ์ฐ์€ ํ›„ ํˆด๋ฐ”์˜ [์‹คํ–‰ ์•„์ด์ฝ˜]์ด ์•„๋‹Œ [๋””๋ฒ„๊ทธ ์•„์ด์ฝ˜]์„ ํด๋ฆญํ•ด์„œ ์•ฑ์„ ์‹คํ–‰ 

- ๋””๋ฒ„๊ฑฐ๋กœ ์•ฑ์ด ์‹คํ–‰๋˜๋ฉด ํ™”๋ฉด ํ•˜๋‹จ์˜ [Debug] ํƒญ์—์„œ ํ˜„์‹œ์ ์˜ ์•ฑ ์ƒํƒœ์™€ ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ํ™•์ธ