๐Ÿ’ป Language/Android : ์•ˆ๋“œ๋กœ์ด๋“œ

[Android] Toolbar, FrameLayout, BottomNavigationView๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ƒ๋‹จ๋ฐ”, ํ•˜๋‹จ๋ฐ” ๋งŒ๋“ค๊ธฐ (#1 - ์„œ๋ก )

mxnxeonx 2022. 4. 4. 04:07
728x90
728x90

Android Studio๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๊ฐœ๋ฐœ์„ ๋ฐฐ์šด์ง€ 2๋…„์ฐจ์ธ ์ง€๊ธˆ๋„ ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ์–ด๋ ค์šด ๊ฒŒ ๋งŽ์€๋ฐ, ์ผ๋‹จ XML์ด๋ผ๋Š” ์–ธ์–ด๋ฅผ ๊ฑฐ์˜ ์ฒ˜์Œ ์ ‘ํ–ˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Java ์ฝ”๋“œ๊ฐ€ ๊ธฐ์กด์˜ Java์™€ ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ XML๊ณผ ์—ฐ๋™ํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด ๋งŽ์•„์„œ ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค.

 

์•ˆ๋“œ๋กœ์ด๋“œ์— ์„œํˆฐ ๋‚˜๋Š” XML์˜ ๋Œ€๋ถ€๋ถ„์„ ๊ทธ๋‚˜๋งˆ ํ™œ์šฉํ•˜๊ธฐ ์‰ฌ์šด LinearLayout์œผ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.

๋‚ด๊ฐ€ ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ์–ดํ”Œ์˜ ๋Œ€๋ถ€๋ถ„์€ ์ƒ๋‹จ๋ฐ”์™€ ์ค‘์•™ ์ฝ˜ํ…์ธ  ์˜์—ญ, ๊ทธ๋ฆฌ๊ณ  ํ•˜๋‹จ๋ฐ”๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๊ณ  ๋А๊ปด LinearLayout์œผ๋กœ ์ƒ๋‹จ๋ฐ” ์˜์—ญ, ์ค‘์•™ ์ฝ˜ํ…์ธ  ์˜์—ญ, ํ•˜๋‹จ๋ฐ” ์˜์—ญ์„ ๋‚˜๋ˆ„์–ด ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

<LinearLayout>
    <LinearLayout>
        ...
    </LinearLayout>
    <LinearLayout>
        ...
    </LinearLayout>
    <LinearLayout>
        ...
    </LinearLayout>
</LinearLayout>

์•„์ฃผ ๊ธฐ๋ณธ์ค‘์˜ ๊ธฐ๋ณธ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์„ฑ์œผ๋กœ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑํ•˜๋‹ˆ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ–ˆ๋‹ค.

  • ๋‹จ์ˆœํžˆ ImageView๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ImageButton ๋˜๋Š” Button์œผ๋กœ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์— ๋”ฐ๋ผ ๋ฏผ๊ฐํ•˜๊ฒŒ ๋ฐ˜์‘ํ•˜๋„๋ก ํ•  ์ˆ˜ ์—†์Œ.
  • ์ค‘์•™ ์ฝ˜ํ…์ธ  ์˜์—ญ์˜ ๋‚ด์šฉ๋งŒ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ชจ๋“  XML์— ์ƒ๋‹จ๋ฐ”์™€ ํ•˜๋‹จ๋ฐ”๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•จ (์ค‘๋ณต ๋ฐœ์ƒ)
  • DrawerLayout์„ ๊ตฌ์„ฑํ•  ๋•Œ Navigation ๋ฉ”๋‰ด๋ฅผ ๋™์ ์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†์Œ.

 

๋ฌผ๋ก  ์ด๊ฒƒ ์™ธ์—๋„ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฒ ์ง€๋งŒ, ๋‚ด๊ฐ€ ๊ฐ€์žฅ ํฌ๊ฒŒ ๋А๋‚€ ๋ฌธ์ œ์ ์€ ์œ„ 3๊ฐ€์ง€์ด๋‹ค. ์ง€๊ธˆ ๊ฐœ๋ฐœํ•˜๋Š” ์–ดํ”Œ์—๋Š” ์šฐ์ธก ์ƒ๋‹จ์˜ ๋ฉ”๋‰ด ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์Šฌ๋ผ์ด๋“œ๋˜๋Š” ์ƒˆ๋กœ์šด ๋ฉ”๋‰ด๊ฐ€ ์—ด๋ฆฌ๊ณ (DrawerLayout) ๊ทธ ๋ฉ”๋‰ด์—์„œ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์˜ˆ์ •์ด์—ˆ๋Š”๋ฐ(ex. ์นด์นด์˜คํ†ก ์ฑ„ํŒ…๋ฐฉ ์šฐ์ธก ์ƒ๋‹จ์˜ ๋ฉ”๋‰ด ๋ฒ„ํŠผ), ์‚ฌ์šฉ์ž ํ”„๋กœํ•„์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ณผ์ •์—์„œ ์‚ฌ์šฉ์ž ํ”„๋กœํ•„์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ๊ฐ€์žฅ ์ปธ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค ๊ฐˆ์•„์—Ž๊ธฐ๋กœ ๋‹ค์งํ–ˆ๋‹ค ...

 

๊ฒŒ๋‹ค๊ฐ€ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ ํˆด์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜๋Š” AppBar, ToolBar, NavigationView ๋“ฑ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ๋‘๊ณ  LinearLayout๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด ๊ฐœ๋ฐœ์ž๋กœ์„œ ๋„ˆ๋ฌด ํ•˜์ˆ˜์˜ ๋ฐฉ์‹์ด ์•„๋‹Œ๊ฐ€ํ•˜๋Š” ๋งˆ์Œ๋„ ์žˆ์—ˆ์ง€๋งŒ (ใ…‹ใ…‹ใ…‹) ์•„๋ฌดํŠผ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ?์˜ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณด๊ณ ์ž ์‹œ์ž‘ํ–ˆ๋‹ค.

 

์‹œ์ž‘์€ ๊ทธ๋Ÿฌํ–ˆ์ง€๋งŒ.... ์ •๋ง ๋งŽ์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ  ๊ทผ ์ผ์ฃผ์ผ๋™์•ˆ ์ƒ๋‹จ๋ฐ” ํ•˜๋‹จ๋ฐ” ๋งŒ๋“ค๊ธฐ์— ๋งค๋‹ฌ๋ ค์„œ ๊ฒจ์šฐ๊ฒจ์šฐ ์„ฑ๊ณตํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. (๊ฐ™์ด ๊ฐœ๋ฐœ์ค‘์ธ ์นœ๊ตฌ์™€ ์—ด์‹ฌํžˆ ํ† ๋ก ํ•œ ๋์— ...)

 

 

์•„๋ฌดํŠผ! ์ตœ์ข…์ ์œผ๋กœ ์™„์„ฑํ•œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑํ–ˆ๋‹ค.

<LinearLayout>
	<include/>
	<LinearLayout>
		<FrameLayout>
		</FrameLayout>
		<DrawerLayout>
			<NavigationView/>
		</DrawerLayout>
	</LinearLayout>
	<BottomNavigationView/>
</LinearLayout>

๊ฐ€์žฅ ๋ฐ”๊นฅ์ชฝ์— LinearLayout ํ‹€์„ ๋‘๊ณ , ToolBar XML์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” include ๋ธ”๋ก๊ณผ ๋˜ ํ•˜๋‚˜์˜ LinearLayout, ํ•˜๋‹จ๋ฐ”๋ฅผ ๋‹ด๋‹นํ•˜๋Š” BottomNavigationView๋ฅผ ๋‚˜๋ž€ํžˆ ๋ฐฐ์น˜, LinearLayout์˜ ์•ˆ์—๋Š” ์ค‘์•™ ์ฝ˜ํ…์ธ  ์˜์—ญ์„ ๋‹ด๋‹นํ•˜๋Š” FrameLayout๊ณผ ์šฐ์ธก ์Šฌ๋ผ์ด๋“œ ๋ฉ”๋‰ด DrawerLayout์„ ๋ฐฐ์น˜ํ•˜์˜€๋‹ค.

 

๋งˆ์ง€๋ง‰์— ํ›„์ˆ ํ•  ๋‚ด์šฉ์ด์ง€๋งŒ, FrameLayout์ด๋ผ๋Š” ๊ฑธ ์ฒ˜์Œ ์‚ฌ์šฉํ•ด๋ดค๋Š”๋ฐ XML ์ˆœ์„œ์— ์ •๋ง ๋ฏผ๊ฐํ•˜๋‹ค๋Š” ๊ฑธ ๋А๊ผˆ๊ณ  .. ๋™์  ์šด์šฉ์ด ๊ฐ€๋Šฅํ•œ ์žฅ์ ์ด ์žˆ์ง€๋งŒ ์ฒ˜์Œ ์“ฐ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ๋„ˆ๋ฌด ๊ฐ€ํ˜นํ•œ ๊ฒƒ ๊ฐ™๋‹ค. (์‚ฌ์‹ค ์ด XML์—์„œ LinearLayout ๋นผ๊ณ ๋Š” ๋‹ค ์ดˆ๋ฉด์ด๋‹ค.)

 

ํž˜๋“ค๊ฒŒ ์™„์„ฑํ•œ ๋งŒํผ ๋ธ”๋กœ๊ทธ์— ๋‚จ๊ฒจ์„œ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด ํŒŒํŠธ๋ฅผ ๋‚˜๋ˆ ์„œ ๊ธ€์„ ์จ๋ณผ ์˜ˆ์ •์ด๋‹ค!

๋‹ค์Œ ๊ธ€์€ Vertical ๋ฐฐ์น˜์˜ ์ตœ์ƒ๋‹จ์ธ ToolBar๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

728x90
320x100