๋ชฉ์ฐจ
์๋๋ก์ด๋ UI ๊ฐ๋ฐ์ ํ๋ฉด ConstraintLayout, LinearLayout , ๋ ์ด์์์ ์ง๋ณด์~~ํ๊ณ ๋ง์ ํ๊ณค ํ๋ค.
๊ทธ๋ฌ๋ ์ค ๋ ์ด์์์ด ๋ฌด์์ธ์ง ๋ฌป๋๋ค๋ฉด ๋ญ๋ผ๊ณ ๋๋ตํ ๊น? ํ๋ ์ง๋ฌธ์ด ๋จธ๋ฆฟ์์ ๋ ์ฌ๋๊ณ ๋ ์ด์์์ ํญ์ ์ ํ๊ณ ์์ง๋ง ๊ฐ๋ ์ ๋ง๋ก์จ ์ค๋ช ํ๊ธฐ์๋ ๊ฐ๋ ์ด ์ ๋๋ก ์ ๋ฆฝ๋์ง ์์ ์ํ๋ผ๊ณ ๋๊ผ๋ค.
๊ทธ ๋ ์ ์ค๋์ ์๋๋ก์ด๋ ๊ณต์๋ฌธ์ ๋ทฐ ํํธ๋ฅผ ์ดํดํ๊ณ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค!!!
๋ ์ด์์์ด๋?
๊ทธ๋์ ๋ ์ด์์์ด ๋ญ์ผ?
๋ ์ด์์์ ์กํฐ๋นํฐ์์์ ๊ฐ์ด ์ฑ ๋ด ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ค.๋ ์ด์์์ ๋ชจ๋ ์์๋ View ๋ฐ ViewGroup ๊ฐ์ฒด์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ด ๋ ๋ทฐ์ ๋ทฐ ๊ทธ๋ฃน์ ์ฐจ์ด๊ฐ ๋ฌด์์ผ๊น??
โ ๋ทฐ์ ๋ทฐ ๊ทธ๋ฃน์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น?
๐ค View ๊ฐ์ฒด๋ ์์ ฏ์ด๋ผ๊ณ ํ๋ฉฐ Button ๋๋ TextView์ ๊ฐ์ ์๋ธ ํด๋์ค ์ค ํ๋์ผ ์ ์๋ค.
ViewGroup ๊ฐ์ฒด๋ ๋ ์ด์์์ด๋ผ๊ณ ํ๋ฉฐ ConstraintLayout์ด๋ LinearLayout ์ ๊ฐ์ด ๋ค์ํ ๋ ์ด์์ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ ์ฌ๋ฌ ์ ํ ์ค ํ๋์ผ ์ ์๋ค.
๋ ์ด์์์ ์ ์ธํ๋ ๋ฐฉ๋ฒ
1๏ธโฃUI ์์๋ฅผ XML๋ก ์ ์ธํ๋ค.
xml๋ก UI๋ฅผ ์ ์ธํ๋ฉด ๋์์ ์ ์ดํ๋ ์ฝ๋์ ์ฑ์ ํํํ๋ UI ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ ์ ์๋ค. ๋ํ XMLํ์ผ์ ์ฌ์ฉํ๋ฉด ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ๋ฐฉํฅ์ ๋ค์ํ ๋ ์ด์์์ ๋ ์ฝ๊ฒ ์ ๊ณตํ ์ ์๋ค.
2๏ธโฃ๋ฐํ์์ ๋ ์ด์์ ์์๋ฅผ ์ธ์คํด์คํ ํ๋ค.
์ด ๋ฐฉ์์ View์ ViewGroup ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ํ๋ก๊ทธ๋๋งคํฑ ๋ฐฉ์์ผ๋ก ์์ฑ์ ์กฐ์ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
โ ๋ฐํ์๊ณผ ์ปดํ์ผ์ ์๋ฏธ๋ ๋ฌด์์ผ๊น?
๋ฐํ์ ๋ ์ธ์คํด์คํ ํ๋ค. ๋ ์ด์์์ XML๋ก ์ ์ธํ ํ ์ปดํ์ผ๋๋๋ก ... ์์ ๋์ค๋ ๋ฐํ์๊ณผ ์ปดํ์ผ์ด ์ ํํ ์ด๋ค ๊ณผ์ ์ ์๋ฏธํ๋ ๊ฒ์ผ๊น?
๐ค
๋จผ์ ์ปดํ์ผ์ ์์ค์ฝ๋๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ ๊ณผ์ ์ ๋งํ๋ค. ์ปดํ์ผ๋ฌ๋ ์์ค ์ฝ๋์ ๋ฌธ๋ฒ์ ์ค๋ฅ๋ฅผ ๊ฒ์ฌํ๊ณ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ๋ฐ์ด๋๋ฆฌ ์ฝ๋๋ก ๋ณํํ๊ฒ ๋๋ค!. ์ด ๊ณผ์ ์ ์คํํ๊ธฐ ์ ์ ์งํ๋๋ ๊ณผ์ ์ผ๋ก ์๋๋ก์ด๋์์๋ .ktํ์ผ์ .classํ์ผ(๋ฐ์ดํธ์ฝ๋)๋ก ๋ณํ๋๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋ฐํ์์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ค์ ๋ก ์คํํ๋ ๋์์ ์๊ฐ์ ์๋ฏธํ๋ค. ์ฆ ํ๋ก๊ทธ๋จ์ด ๋์ํ๋ ๋์์ ๋ฐ์ํ๋ ๋ชจ๋ ๊ฒ๋ค์ ๋งํ๋ค. ๊ทธ๋์ ๋ฐํ์ ๋ ์ธ์คํด์คํํ๋ค๋ ๊ฒ์ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ํน์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค๋ ์๋ฏธ๊ฐ ๋๋ค!!
์ฌ์ฉ์์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ค XML ๋ ์ด์์ ํ์ผ๋ค์ ์ปดํ์ผ ์๊ฐ์ View ๋ฆฌ์์ค ์์ ์ปดํ์ผ๋๋ค. ์กํฐ๋นํฐ์ onCreate ์ฝ๋ฐฑ ๊ตฌํ์์ ๋ ์ด์์ ๋ฆฌ์์ค๋ฅผ ๋ก๋ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ ์์ฃผ ๋ดค์ ํํ์ธ ์๋์ ํํ์ฒ๋ผ xml ๋ ์ด์์์ setContentView๋ฅผ ํตํด ์ ๋ฌํ๋ฉด ๋๋ค.
fun onCreate(savedInstanceState: Bundle) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_layout)
}
์์ฑ
๋ชจ๋ View์ ViewGroup ๊ฐ์ฒด๋ ๊ณ ์ ํ ๋ค์ํ xml ์์ฑ์ ์ง์ํ๋ค. ์๋ฅผ ๋ค์ด TextView ์์ฑ์ textSize๋ผ๋ ์์ฑ์ ์ง์ํ๋ค. ์ด ์์ฑ์ TextView์๋ง ์ ์ฉ๋๋ ๊ฒ์ด ์๋๋ผ TextView ํด๋์ค๋ฅผ ํ์ฅํ๋ ๋ชจ๋ View ๊ฐ์ฒด์์๋ ์์๋๋ค.
id ์์ฑ์ ๋ฃจํธ View ํด๋์ค์์ ์์๋๊ธฐ ๋๋ฌธ์ ๋ชจ๋ View ๊ฐ์ฒด์ ๊ณตํต์ ์ผ๋ก ์ ์ฉ๋๋ค.
๋ ์ด์์ ๋งค๊ฐ๋ณ์๋ก ์ฌ๊ฒจ์ง๋ ์์ฑ๋ ์๋ค. ์ด ์์ฑ์ View ๊ฐ์ฒด์ ์์ ViewGroup ๊ฐ์ฒด์์ ์ ์ํ๋๋ก ๋ ์ด์์ orientation, ํน์ ๋ ์ด์์ ๋ฐฉํฅ์ ์ค๋ช ํด์ฃผ๋ ์์ฑ์ด๋ค.
ID ์์ฑ
๋ชจ๋ view ๊ฐ์ฒด์๋ ํธ๋ฆฌ ๋ด์์ View๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ธฐ ์ํด ์ฐ๊ฒฐ๋ ์ ์์ธ ID๊ฐ ์์ ์ ์๋ค. ์ด ID๋ ์ฑ์ด ์ปดํ์ผ๋ ๋ (์ฆ kt -> ๋ฐ์ดํธ ์ฝ๋๋ก ๋ณํ ๊ณผ์ ) ์ ์๋ก ์ฐธ์กฐ๋์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ๋ ์ด์์ xml ํ์ผ์์ id ์์ฑ์ ๋ฌธ์์ด๋ก ํ ๋น๋๋ค.
ID๋ ํธ๋ฆฌ ์ ์ฒด์์๋ ๊ณ ์ ํ์ง ์์๋ ๋์ง๋ง ๊ฒ์ํ๋ ํธ๋ฆฌ์ ๋ถ๋ถ ๋ด์์๋ ๊ณ ์ ํด์ผํ๋ค. ๊ฐ๋ฅํ๋ฉด ๊ณ ์ ํ๊ฒ ๋ง๋๋ ๊ฒ์ด ๊ฐ์ฅ ์ข๋ค!
๋ ์ด์์ ๋งค๊ฐ๋ณ์
์ด๋ layout_somthing ํํ๋ฅผ ๊ฐ์ง๋ ๋ ์ด์์ ์์ฑ์ด๋ค.
์ด ์์ฑ์ ์์ฑ์ด ์๋ ViewGroup์ ์ ์ ํ View์ ๋ ์ด์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ํ๋ค.
๋ชจ๋ ViewGroup ํด๋์ค๊ฐ ViewGroup.LayoutParams๋ฅผ ํ์ฅํ๋ ์ค์ฒฉ ํด๋์ค๋ฅผ ๊ตฌํํ๋ค. ์ด ์๋ธ ํด๋์ค์๋ ๊ฐ ํ์ ๋ทฐ์ ํฌ๊ธฐ์ ์์น๋ฅผ ๋ทฐ ๊ทธ๋ฃน์ ์ ์ ํ๊ฒ ์ ์ํ๋ ์์ฑ ์ ํ๋ค์ด ํฌํจ๋๋ค.
๋ชจ๋ ๋ทฐ ๊ทธ๋ฃน์๋ layout_width์ layout_height๋ฅผ ์ฌ์ฉํ์ฌ ๋๋น์ ๋์ด๋ฅผ ์ ์ํด์ค๋ค.
๋๋น์ ๋์ด๋ ์ ํํ ์น์๋ก ์์ฃผ ์ง์ ํ์ง ์๋ ๊ฒ์ด ์ข๋ค!
- wrap_content : ์ฝํ ์ธ ์ ํ์ํ ํฌ๊ธฐ๋ก ์์ฒด ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋๋ก ๋ทฐ์ ์ง์ํ๋ค.
- match_parent : ์์ ๋ทฐ ๊ทธ๋ฃน์ด ํ์ฉํ๋ ํ ์ต๋ํ์ผ๋ก ์ปค์ง๋๋ก ๋ทฐ์ ์ง์ํ๋ค.
๋ ์ด์์์ ๋๋น์ ๋์ด๋ ํฝ์ ๊ณผ ๊ฐ์ ์ ๋์ ์ธ ๋จ์๋ฅผ ์ฌ์ฉํด์ ์ง์ ํ์ง ์๋ ๊ฒ์ด ์ข๋ค!
๊ทธ๋ณด๋ค๋ ๋ฐ๋ ํฝ์ ๋จ์์ธ dp, ๊ทธ๋ฆฌ๊ณ ์์์ ์์๋ณธ wrap_content, match_parent์ ๊ฐ์ ์๋์ ์ธ ์ธก์ ๊ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
์ผ๋ฐ ๋ ์ด์์
ํ๋ ์ด์์ ๋ ์ด์์์ ๋ค๋ฅธ ๋ ์ด์์ ๋ด์ ์ค์ฒฉํ ์ ์์ง๋ง ๋ ์ด์์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ฅํ ์๊ฒ ์ ์งํ๋ ๊ฒ ์ข๋ค!
์ค์ฒฉ๋ ๋ ์ด์์์ด ์ ์์๋ก ๋ ๋น ๋ฅด๊ฒ ๊ทธ๋ ค์ง๋ค. ๋์ ๋ทฐ ๊ณ์ธต๊ตฌ์กฐ๊ฐ ๊น์ ๋ทฐ ๊ณ์ธต๊ตฌ์กฐ๋ณด๋ค ๋ซ๋ค!
์ง๊ธ ๊ตฌํํ๊ณ ์๋ ๋ฉ์ธํ๋ฉด ui ๊ตฌ์กฐ ๊ตฌํ ์ ์ ๊ธฐ์ตํ๊ณ ๊ตฌํํด๋ด์ผ๊ฒ ๋ค
+ ์ฐพ์๋ณด๋ ๊ทธ๋์ ConstarintLayout์ ์ฌ์ฉํ๋ ๊ฒ์ด์๋ค.
ConstriantLayout์ ์ฌ์ฉํ๋ฉด ์ค์ฒฉ๋ ๋ทฐ ๊ทธ๋ฃน์ด ์๋ ํ๋ซ ๋ทฐ ๊ณ์ธต ๊ตฌ์กฐ๋ก ํฌ๊ณ ๋ณต์กํ ๋ ์ด์์์ ๋ง๋ค ์ ์๋ค
LinearLayout์ ๋ชจ๋ ํ์ ์์๋ฅผ ๊ฐ๋ก ๋๋ ์ธ๋ก๋ก ํ ๋ฐฉํฅ์ผ๋ก ์ ๋ ฌํ๋ ๋ทฐ ๊ทธ๋ฃน์ด๋ค.
๊ทธ๋ ์ง๋ง ๋ ์ข์ ์ฑ๋ฅ์ ์ํด์๋ ConstraintLayout์ผ๋ก ๋น๋๋ฅผ ๊ถ์ฅํ๋ค!
+ LinearLayout์ผ๋ก ๊ตฌํํ ๊ฒฝ์ฐ Component Tree์์ Convert LinearLayout to ConstraintLayout์ ํตํด ๋ณ๊ฒฝํ ์ ์๋ ๊ธฐ๋ฅ์ด ์๋ค.
๋์ ๋ชฉ๋ก ์์ฑ
๋ ์ด์์ ์ฝํ ์ธ ๊ฐ ๋์ ์ด๊ฑฐ๋ ๋ฏธ๋ฆฌ ๊ฒฐ์ ๋์ง ์์ ๊ฒฝ์ฐ RecyclerView ๋๋ AdapterView์ ์๋ธํด๋์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก๋ RecyclerView๊ฐ AdapterView๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ค.
์ฌ์ฉํ ์ ์๋ ๋ ์ด์์์ 1) ์คํฌ๋กค ํํ์ ๋จ์ผ ์ด ๋ชฉ๋ก๊ณผ 2) ์ด๊ณผ ํ์ ์คํฌ๋กค ๊ทธ๋ฆฌ๋์ด๋ค.
'๐ค2024 ์๋๋ก์ด๋ > ๐ฟ ์ํ ํ๋ก์ ํธ ๊ฐ๋ฐ ์ผ์ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐จ๋ฉ์ธ ํ๋ฉด UI ๊ตฌํ ๊ณผ์ ๊ณผ ์ง๋ฌธ ๊ธฐ๋ก (0) | 2024.04.05 |
---|---|
Android : ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ ์ ๋ฆฌ (0) | 2024.03.27 |
Android : ์ด๊ธฐํ ๋ก์ง์ ๋ด๋ "App StartUp ๋ผ์ด๋ธ๋ฌ๋ฆฌ" ์์๋ณด๊ธฐ (0) | 2024.03.26 |
Android Context ์ฌ์ฉ ์ Memory leak ๋ฐฉ์ง๋ฅผ ์ํ ๋ฌธ์ ํด๊ฒฐ (0) | 2024.03.20 |
๐๏ธ[Android ์ฑ ์ํคํ ์ณ] : UI layer , Domain layer, Data layer (0) | 2024.03.15 |