[์๋๋ก์ด๋] ์๋๋ก์ด๋ ์ฑ ์ ๋ฌธ(1)
ใ ์๋๋ก์ด๋ ์คํ๋์ค๋ฅผ ํตํ ๊ฐ๋จํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋น๋ โ ใ
- Layout Editor ์ด๊ธฐ
- ํ ์คํธ ์์ ์ถ๊ฐ
- ๋ฒํผ ์ถ๊ฐ
- UI ๋ฌธ์์ด ๋ณ๊ฒฝ
- ์ ์ฐํ ํฌ๊ธฐ์ ํ ์คํธ ์์ ๋ง๋ค๊ธฐ(๋์ ์์ ์์ฑ)
- ์ฑ ์คํ(์๋ฎฌ๋ ์ดํฐ)
[ ์๋๋ก์ด๋ ์ฑ UI ๊ณ์ธต ๊ตฌ์กฐ ]
- Android ์ฑ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ ๋ ์ด์์ ๋ฐ ์์ ฏ์ ๊ณ์ธต ๊ตฌ์กฐ๋ก ๋น๋๋จ.
- ๋ ์ด์์์ ViewGroup ๊ฐ์ฒด๋ก ํ๋ฉด์์ ํ์ ๋ทฐ์ ์์น ์ง์ ์ ์ ์ดํ๋ ์ปจํ ์ด๋๋ฅผ ๋ปํจ
- ์์ ฏ์ View ๊ฐ์ฒด๋ก ๋ฒํผ ๋ฐ ํ ์คํธ ์์์ ๊ฐ์ UI ๊ตฌ์ฑ์์๋ฅผ ์๋ฏธํจ
๋ ์ด์์์์ ViewGroup ๊ฐ์ฒด๊ฐ ๋ถ๊ธฐ๋ฅผ ํ์ฑํ๊ณ View ๊ฐ์ฒด๋ฅผ ํฌํจํ๋ ๋ฐฉ์์ ํํํ ๊ทธ๋ฆผ

- Android๋ ViewGroup ๋ฐ View ํด๋์ค๋ฅผ ์ํ XML ์ธ์ด๋ฅผ ์ ๊ณตํ๋ฏ๋ก UI ๋๋ถ๋ถ์ด XML์ ์ ์๋จ
- Android ์คํ๋์ค์ Layout Editor๋ ๊ฐ๋ฐ์๊ฐ ๋ทฐ๋ฅผ ๋๋๊ทธ ์ค ๋๋กญ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ ์ด์์์ ์์ฑ ์ ์ฌ์ฉ
[ Layout Editor ์ด๊ธฐ ]
1. ํ๋ก์ ํธ ์ฐฝ์์ app > res > layout > activity_main.xml ์ด๊ธฐ
2. ํธ์ง๊ธฐ์ XML ์์ค๊ฐ ํ์๋๋ฉด ์ฐฝ ์ค๋ฅธ์ชฝ ์๋จ์ ์๋ Design ํญ ํด๋ฆญ

3. Select Design Surface ๋ฒํผ ํด๋ฆญ ํ Blueprint(์ฒญ์ฌ์ง) ํด๋ฆญ

4. Layout Editor ํด๋ฐ์์ View Options๋ฅผ ํด๋ฆญํ๊ณ Show All Constraints๊ฐ ์ ํ๋์ด ์๋์ง ํ์ธ

5. ์๋ ์ฐ๊ฒฐ ์ฌ์ฉ์ด ์ค์ง๋์ด ์๋์ง ํ์ธํ๊ธฐ

6. ํด๋ฐ์์ 0dp(Default Margins) ํด๋ฆญ ํ ๋ง์ง 16 ์ค์ / ํ์์ ๋์ค์ ๋ทฐ์ ์ฌ๋ฐฑ ์กฐ์ ๊ฐ๋ฅ

7. ํด๋ฐ์์ Device for Preview ํด๋ฆญ ํ 5.5, 1440 x 2560, 560 dpi (Pixel XL) ์ ํ

8. ์ต์ข ์ ์ผ๋ก ์๋์ ๊ฐ์ ๋ ์ด์์ ํ์ด์ง(xml) ์ค๋น ์๋ฃ

[ Component Tree ]
- Layout Editor ์ข์ธก ํ๋จ์ Component Tree ํจ๋์ ๋ ์ด์์์ ๋ทฐ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ค
- ํ์ฌ ๋ ์ด์์์ ๋ฃจํธ ๋ทฐ๋ ConstraintLayout ์ด๋ฉฐ ์ด ๋ทฐ๋ ํ๋์ TextView ๊ฐ์ฒด๋ง์ ํฌํจ

- ConstraintLayout์ ๋์ ๋ทฐ์ ์์ ์์ ๋ ์ด์์์ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฐ ๋ทฐ์ ์์น๋ฅผ ์ ์ํ๋ ๋ ์ด์์์
- ํด๋น ๋ฐฉ์์ผ๋ก ํ๋ซ ๋ทฐ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ ๋ ์ด์์๊ณผ ๋ณต์กํ ๋ ์ด์์์ ๋ชจ๋ ์์ฑ ๊ฐ๋ฅํจ
[ ํ ์คํธ ์์ ์ถ๊ฐ ]
1. ๋ ์ด์์์ ์ด๋ฏธ ์กด์ฌํ๋ ํญ๋ชฉ ์ ๊ฑฐ
2. Palette ํจ๋์์ Text ํด๋ฆญ ์ ์ฌ์ฉ๊ฐ๋ฅํ ํ ์คํธ ์ปจํธ๋กค ํ์
3. Plain Text๋ฅผ ๋์์ธ ํธ์ง๊ธฐ๋ก ๋๋๊ทธํ์ฌ ๋ ์ด์์ ์๋จ์ ๋๋กญ

4. ๋์์ธ ํธ์ง๊ธฐ์์ ๋ทฐ๋ฅผ ํด๋ฆญํ๋ฉด ๊ฐ ๋ชจ์๋ฆฌ์ ๋ทฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ ์ ์ฌ๊ฐํ ํธ๋ค๊ณผ ๊ฐ ๋ฉด์ ์ํ ์ ์ฝ์กฐ๊ฑด ์ต์ปค๋ฅผ ํ์ธ ๊ฐ๋ฅ
5. ์๋จ์ ์ต์ปค๋ฅผ ํด๋ฆญํ์ฌ ๋ ์ด์์์ ๋งจ ์์ ๋ง์ถ ๋๊น์ง ์๋ก ๋๋๊ทธ(์ค์ ๋ ๊ธฐ๋ณธ ๋ง์ง 16์ ๊ฑธ๋ฆด ๋๊น์ง)
6. ๋์ผํ ๊ณผ์ ์ ์ฌ์ฉํ์ฌ ๋ทฐ ์ผ์ชฝ์ ์ ์ฝ ์กฐ๊ฑด์ ๋ ์ด์์ ์ผ์ชฝ์ ๋ง์ถ๊ธฐ

[ ๋ฒํผ ์ถ๊ฐ ]
1. Pallete ํจ๋์์ Buttons ํด๋ฆญ
2. ๋ฒํผ ์์ ฏ์ ๋์์ธ ํธ์ง๊ธฐ๋ก ๋๋๊ทธํ์ฌ ์ค๋ฅธ์ชฝ ๋ถ๊ทผ์ ๋๋กญ
3. ๋ฒํผ ์ผ์ชฝ์์ ํ ์คํธ ์์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ ์ฝ ์กฐ๊ฑด ์ค์
4. ๊ฐ๋ก ์ ๋ ฌ์์ ๋ทฐ๋ฅผ ์ ํํ๊ธฐ ์ํด ํ ์คํธ ๊ธฐ์ค์ ์ฌ์ด์ ์ ์ฝ ์กฐ๊ฑด ์์ฑ
๋ฒํผ์ ๋ง์ฐ์ค ์ฐํด๋ฆญ ํ ๋ค Show Baseline ์ ํ
๊ธฐ์ค ์ต์ปค๊ฐ ๋ฒํผ ์์ ํ์๋๋ฉด ์ต์ปค๋ฅผ ๊ธธ๊ฒ ํด๋ฆญํ ํ ์ธ์ ํ ์คํธ ์์์ ํ์๋๋ ๊ธฐ์ค ์ต์ปค๋ก ๋๋๊ทธ

[ UI ๋ฌธ์์ด ๋ณ๊ฒฝ ]
- UI๋ฅผ ๋ฏธ๋ฆฌ ๋ณด๋ ค๋ฉด ํด๋ฐ์์ Select Design Surface๋ฅผ ํด๋ฆญ ํ Design์ ์ ํ
- ์ด ๋ ํ ์คํธ ์ ๋ ฅ ๋ฐ ๋ฒํผ ๋ผ๋ฒจ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋์ด ์๋ค

[ UI ๋ฌธ์์ด ๋ณ๊ฒฝ ]
1. Project ์ฐฝ์ ์ด๊ณ app > res > values > strings.xml ํ์ผ์ ์ฐ๋ค
์ด ํ์ผ์ ๋ชจ๋ UI ๋ฌธ์์ด ์ง์ ์ด ๊ฐ์ผํ ๋ฌธ์์ด ๋ฆฌ์์ค ํ์ผ์
์ด ํ์ผ์ ์ด์ฉํ์ฌ ๋ชจ๋ UI ๋ฌธ์์ด์ ๊ด๋ฆฌ, ํ์, ์ ๋ฐ์ดํธ ๋ฐ ํ์งํ ๊ฐ๋ฅ
2. ์ฐฝ ์๋จ์ Open editor๋ฅผ ํด๋ฆญ.

3. Open editor ํด๋ฆญ ์ Translations Editor๊ฐ ์ด๋ฆฌ๋ฉฐ ๊ธฐ๋ณธ ๋ฌธ์์ด ์ถ๊ฐ์ ์์ฑ์ด ๊ฐ๋ฅํ ์ธํฐํ์ด์ค ์ ๊ณต
4. Add key๋ฅผ ํด๋ฆญํ์ฌ ์๋ก์ด ๋ฌธ์์ด์ ํ ์คํธ ์์์ 'ํํธ ํ ์คํธ'๋ก ๋ง๋ค์ด์ค

5. Key ์ ๋ ฅ๋์ ํด๋น ํค์ ์ด๋ฆ์ ์ค์ , Default Value ์ ๋ ฅ๋์ ํค ๊ฐ์ ์ค์


6. activity_main.xml(๋ ์ด์์ ํ์ผ)์ ํด๋ฆญ ํ ๋ฌธ์์ด์ ์ถ๊ฐ
7. ๋ ์ด์์์์ ํ ์คํธ ์์๋ฅผ ํด๋ฆญํ ํ ์ค๋ฅธ์ชฝ ์๋จ์ Attributes๋ฅผ ํด๋ฆญ
8. ํ์ฌ ํ ์คํธ ์์์ text ์์ฑ์ธ 'Name' ๊ฐ์ ์ฐพ์ ์ญ์

9. ํ์ฌ ํ ์คํธ ์์์ hint ์์ฑ์ ์ฐพ์์ ํ ์คํธ ์์ ์ค๋ฅธ์ชฝ์ ์๋ Pick a Resource๋ฅผ ํด๋ฆญ
ํ์๋ ๋ํ์์์์ ๋ชฉ๋ก์ ์์ฑํด ๋ ํค์ธ edit_message๋ฅผ ์ ํ


10. ๋ ์ด์์์์ ๋ฒํผ ํด๋ฆญ ํ ๋ฒํผ ์์์ text ์์ฑ์ ์ฐพ์ Pick a Resource๋ฅผ ํด๋ฆญํ๊ณ button_send๋ฅผ ์ ํ

[ ์ ์ฐํ ํฌ๊ธฐ์ ํ ์คํธ ์์ ๋ง๋ค๊ธฐ ]
- ๋ค์ํ ๋ชจ๋ฐ์ผ ๋๋ฐ์ด์ค์ ํ๋ฉด ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ฐ์ํ๋ ๋ ์ด์์์ ๋ง๋ค๊ธฐ ์ํด์๋
๋ฒํผ๊ณผ ์ฌ๋ฐฑ์ ๊ณ ๋ คํ ํ ํ ์คํธ ์์๋ฅผ ๋๋ ค ๋จ์ ๊ฐ๋ก ๊ณต๊ฐ์ ์ฑ์์ผ ํจ
- ํด๋ฐ์์ Select Design Surface๋ฅผ ํด๋ฆญ ํ Blueprint(์ฒญ์ฌ์ง)์ ์ ํ
1. ๋ ๋ทฐ(ํ ์คํธ ์์, ๋ฒํผ ์์)๋ฅผ ๋ชจ๋ ์ ํํด ์ค๋ค.
(ํ ๋ทฐ๋ฅผ ํด๋ฆญ ํ Shift๋ฅผ ๋๋ฅธ ์ฑ๋ก ๋๋จธ์ง ๋ทฐ๋ฅผ ํด๋ฆญํ ๋ค์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ ๋๋ฆ)
Chains > Create Horizontal Chain์ ์ ํํ๋ค. ์ด ๋ ๋ ์ด์์์ ์๋์ ๊ฐ์ด ํ์๋๋ค.

โป ์ฒด์ธ์ ๋ ์ด์์ ๋ทฐ ๊ฐ์ ์กด์ฌํ๋ ์๋ฐฉํฅ ์ ์ฝ ์กฐ๊ฑด์(์ฒด์ธ์ ํตํด ์ฐ๊ฒฐ๋ ๋ทฐ๋ฅผ ์ผ๊ด์ฑ ์๊ฒ ๋ฐฐ์น ๊ฐ๋ฅ)
2. ๋ฒํผ ๋ทฐ๋ฅผ ์ ํ ํ Attributes ์ฐฝ์ ์ฐ๋ค. ๊ทธ ํ Constraint Widget์ ์ฌ์ฉํ์ฌ ์ค๋ฅธ์ชฝ ์ฌ๋ฐฑ์ 16dp๋ก ์ค์

3. ์ด์ ํ ์คํธ ์์๊ฐ ํ์ฅ๋์ด ๋จ์ ๊ณต๊ฐ์ ์๋์ผ๋ก ์ฑ์ด๋ค.

[ ์ฑ ์คํ ]
[ ์ค์ ๊ธฐ๊ธฐ์์ ์คํ ]
1. USB ์ผ์ด๋ธ์ ์ฌ์ฉํ์ฌ ๊ธฐ๊ธฐ๋ฅผ ๊ฐ๋ฐ ๋จธ์ ์ ์ฐ๊ฒฐ
(Windows์์ ๊ฐ๋ฐํ๋ค๋ฉด ๊ธฐ๊ธฐ์ ๋ง๋ USB ๋๋ผ์ด๋ฒ ์ค์น)
2. ๋ค์ ๋จ๊ณ๋ฅผ ์คํํ์ฌ Developer options ์ฐฝ์์ USB debugging์ ์ฌ์ฉ ์ค์
a. ์ค์ ์ฑ์ ์ฐ๋ค
b. ๊ธฐ๊ธฐ์์ Android v8.0 ์ด์์ ์ฌ์ฉํ๋ค๋ฉด System์ ์ ํํ๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๋ค์ ๋จ๊ณ๋ก ์งํ
c. ํ๋จ์ผ๋ก ์คํฌ๋กคํ์ฌ About phone์ ์ ํ
d. ํ๋จ์ผ๋ก ์คํฌ๋กคํ์ฌ ๋น๋ ๋ฒํธ 7๋ฒ์ ํญํ๋ค.
e. ์ด์ ํ๋ฉด์ผ๋ก ๋์๊ฐ์ ํ๋จ์ผ๋ก ์คํฌ๋กคํ ๋ค์ ๊ฐ๋ฐ์ ์ต์ ์ ํญ
f. ๊ฐ๋ฐ์ ์ต์ ์ฐฝ์์ ์๋๋ก ์คํฌ๋กคํ์ฌ USB ๋๋ฒ๊น ์ ์ฐพ์ ์ฌ์ฉ ์ค์
3. Android ์คํ๋์ค์ ํด๋ฐ์ ์๋ ์คํ/๋๋ฒ๊ทธ ๊ตฌ์ฑ ๋๋กญ๋ค์ด ๋ฉ๋ด์์ ์ฑ์ ์ ํ
4. ํด๋ฐ์ ๋์ ๊ธฐ๊ธฐ ๋๋กญ๋ค์ด ๋ฉ๋ด์์ ์ฑ์ ์คํํ๋ ค๋ ๊ธฐ๊ธฐ๋ฅผ ์ ํ

5. Run ๋ฒํผ์ ํด๋ฆญ (Adroid ์คํ๋์ค๋ ์ฐ๊ฒฐ๋ ๊ธฐ๊ธฐ์ ์ฑ์ ์ค์น ํ ๊ธฐ๊ธฐ๋ฅผ ์์)
[ ์๋ฎฌ๋ ์ดํฐ์์ ์คํ ]
1. Android ์คํ๋์ค์์ ์๋ฎฌ๋ ์ดํฐ๊ฐ ์ฑ์ ์ค์นํ๊ณ ์คํํ๋๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ํ๊ฒฝ(AVD)์ ๋ง๋ ๋ค.
2. ํด๋ฐ์ ์คํ/๋๋ฒ๊ทธ ๊ตฌ์ฑ ๋๋กญ๋ค์ด ๋ฉ๋ด์์ ์ฑ์ ์ ํ
3. ๋์ ๊ธฐ๊ธฐ ๋๋กญ๋ค์ด ๋ฉ๋ด์์ ์ฑ์ ์คํํ๋ จ๋ AVD๋ฅผ ์ ํ
4. Run ๋ฒํผ์ ํด๋ฆญํ๋ค.

์ฐธ์กฐ : ์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ฌธ์(https://developer.android.com/docs)