๋ ์ด์์
๊ทธ๋ฆฌ๋ ๋ ์ด์์(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] ํญ์์ ํ์์ ์ ์ฑ ์ํ์ ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ํ์ธ