์ถ์ฒ
Gemini
์๋๋ก์ด๋์์ ํ๋ฌํฐ๋ ๊ณ ์ฑ๋ฅ 2D ๋ ๋๋ง ์์ง์ธ Skia๋ฅผ ์ฌ์ฉํด UI๋ฅผ ์ง์ ๋ ๋๋งํ๋ค.
Skia
๊ตฌ๊ธ์์ ์คํ์์ค๋ก ์ ๊ณตํ๋ ๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
์น, ๋ชจ๋ฐ์ผ, ๋ฐ์คํฌํ ๋ฑ ๋ค์ํ ํ๋ซํผ์์ ์ฌ์ฉ๋๋ค.
Skia์ ํต์ฌ ๋ ๋๋ง ๊ธฐ์
1. ์์ ฏ ํธ๋ฆฌ
ํ๋ฌํฐ๋ ๋ชจ๋ UI ์์๋ฅผ ์์ ฏ ํธ๋ฆฌ๋ก ๊ตฌ์ฑํ๋ค. ์์ ฏ ํธ๋ฆฌ๋ ๋ถ๋ชจ ์์ ฏ๊ณผ ์์ ์์ ฏ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๊ฐ ์์ ฏ์ ์์ฒด์ ์ธ ๋ ์ด์์๊ณผ ํ์ธํ ๋ก์ง์ ๊ฐ์ง๋ค.
1-1.์์ ฏ ํธ๋ฆฌ์ ์ญํ
- UI ์์๋ฅผ ๊ณ์ธต ๊ตฌ์กฐ๋ก ๊ตฌ์ฑํ๋ค.
- ๋ ์ด์์์ ๊ณ์ฐํ๊ณ ์ ์ฉํ๋ค.
- ํ์ธํ ์์ ์ ์ํํ๋ค.
- ์ฌ์ฉ์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ค.
2. ๋ ์ด์์ ์์คํ
ํ๋ฌํฐ๋ ๋ค์ํ ๋ ์ด์์ ์๊ณ ๋ฆฌ์ฆ์ ์ ๊ณตํด ์์ ฏ ํธ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ฐฐ์นํ๋ค.
ํ๋ฌํฐ ๋ ์ด์์ ์๊ณ ๋ฆฌ์ฆ
ํ๋ฌํฐ๋ ๋ค์ํ ๋ ์ด์์ ์๊ณ ๋ฆฌ์ฆ์ ์ ๊ณตํด ์์ ฏ ํธ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ฐฐ์นํ๋ค. ์ฃผ์ ๋ ์ด์์ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. Constrain-based layout
- ๋ถ๋ชจ ์์ ฏ์ด ์์ ์์ ฏ์๊ฒ ํฌ๊ธฐ ์ ์ฝ ์กฐ๊ฑด์ ์ ๊ณตํ๊ณ , ์์ ์์ ฏ์ ๋ถ๋ชจ์ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ ์์ ์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ค.
- ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ ์ด์์ ์๊ณ ๋ฆฌ์ฆ์ด๋ฉฐ, Column, Row, Stack, SizedBox ๋ฑ ๋ค์ํ ์์ ฏ์์ ์ฌ์ฉ๋๋ค.
- ์์: Column ์์ ฏ ์์ ์ฌ๋ฌ ๊ฐ์ Row ์์ ฏ์ ๋ฐฐ์นํ๋ ๊ฒฝ์ฐ, ๊ฐ Row ์์ ฏ์ Column ์์ ฏ์ ๊ฐ๋ก ๊ธธ์ด์ ๋ง์ถฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ค.
2. Size-based layout:
2. Size-based layout
- ์์ ์์ ฏ์ ํฌ๊ธฐ๋ฅผ ์ง์ ์ง์ ํ์ฌ ๋ ์ด์์์ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ด๋ค.
- Constrain-based layout์ ํจ๊ป ์ฌ์ฉํ๊ฑฐ๋, ๋จ๋ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
- ์์: SizedBox ์์ ฏ์ ์ฌ์ฉํ์ฌ ์์ ์์ ฏ์ ํฌ๊ธฐ๋ฅผ ๊ณ ์ ์ํฌ ์ ์๋ค.
3. Custom layout
- ์์ ฏ ํธ๋ฆฌ๋ฅผ ์ง์ ๊ณ์ฐํ๊ณ ๋ฐฐ์นํ๋ ์ฌ์ฉ์ ์ ์ ๋ ์ด์์์ด๋ค.
- ๋ ๋ณต์กํ ๋ ์ด์์์ ๊ตฌํํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๋ค.
- LayoutBuilder, CustomSingleChildLayout, CustomMultiChildLayout ๋ฑ์ ์์ ฏ์ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์๋ค.
- ์์: ํ๋ฉด์ ๋๊ฐ์ ์ผ๋ก ๋๋๋ ๋ ์ด์์์ ๊ตฌํํ๋ ค๋ฉด Custom layout์ ์ฌ์ฉํด์ผ ํ๋ค.
4. Flexible layout
- Constrain-based layout์ ํ์ฅ ๋ฒ์ ์ผ๋ก, ์์ ์์ ฏ๋ค์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ์ ์ฐํ๊ฒ ๋ฐฐ๋ถํ๋๋ก ํ๋ค.
- Row, Column, Wrap ๋ฑ์ ์์ ฏ์์ ์ฌ์ฉ๋๋ค.
- ์์: Row ์์ ฏ ์์ ์ฌ๋ฌ ๊ฐ์ Text ์์ ฏ์ ๋ฐฐ์นํ๋ ๊ฒฝ์ฐ, Text ์์ ฏ๋ค์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ๋ฐ๋ผ ํฌ๊ธฐ๋ฅผ ์กฐ์ ๋๋ค.
5. Positioning
- ์์ ฏ์ ํน์ ์์น์ ๋ฐฐ์นํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- Stack, Positioned ๋ฑ์ ์์ ฏ์์ ์ฌ์ฉ๋๋ค.
- ์์: Stack ์์ ฏ ์์ Positioned ์์ ฏ์ ๋ฐฐ์นํ์ฌ ์์ ฏ์ ์์น๋ฅผ ์กฐ์ ํ ์ ์๋ค.
6. Alignment
- ์์ ฏ์ ์ ๋ ฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- Center, Align, SafeArea ๋ฑ์ ์์ ฏ์์ ์ฌ์ฉ๋๋ค.
- ์์: Column ์์ ฏ ์์ Text ์์ ฏ์ ๊ฐ์ด๋ฐ ์ ๋ ฌํ๋ ค๋ฉด Center ์์ ฏ์ ์ฌ์ฉํ ์ ์๋ค.
3. ํ์ธํ ์์คํ
ํ๋ฌํฐ๋ Canvas API๋ฅผ ์ ๊ณตํด ์์ ฏ์ ์ง์ ๊ทธ๋ฆด ์ ์๊ฒ ํ๋ค. Canvas API๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ํ ๋ํ, ์ด๋ฏธ์ง, ํ ์คํธ ๋ฑ์ ๊ทธ๋ฆด ์ ์์ผ๋ฉฐ, ์ฌ์ฉ์ ์ ์ ์ ฐ์ด๋๋ฅผ ์ฌ์ฉํด ๋ณต์กํ ๊ทธ๋ํฝ ํจ๊ณผ๋ฅผ ๋ง๋ค ์ ์๋ค.
4. ํ๋์จ์ด ๊ฐ์
ํ๋ฌํฐ๋ GPU๋ฅผ ์ฌ์ฉํด ๋ ๋๋ง ์์ ์ ๊ฐ์ํํ๋ค. GPU๋ CPU๋ณด๋ค ๊ทธ๋ํฝ ์์ ์ฒ๋ฆฌ ์๋๊ฐ ํจ์ฌ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์, ํ๋ฌํฐ๋ ๋ถ๋๋ฝ๊ณ ๋น ๋ฅธ UI๋ฅผ ์ ๊ณตํ ์ ์๋ค.
ํ๋ฌํฐ ๋ ๋๋ง ๋ฐฉ์์ ์ฅ์
1. ๊ณ ์ฑ๋ฅ
Skia์ ๊ฐ์ ๊ณ ์ฑ๋ฅ ๋ ๋๋ง ์์ง์ ์ฌ์ฉํ์ฌ ๋ถ๋๋ฝ๊ณ ๋น ๋ฅธ UI๋ฅผ ์ ๊ณตํ๋ค.
2. ํ๋ซํผ ๋ ๋ฆฝ์ฑ
Skia๋ ๋ค์ํ ํ๋ซํผ์ ์ง์ํ๊ธฐ ๋๋ฌธ์, ํ๋ฌํฐ ์ฑ์ ๋ณ๋์ ์ฝ๋ ๋ณ๊ฒฝ ์์ด ์ฌ๋ฌ ํ๋ซํผ์์ ์คํ๋ ์ ์๋ค.
3. ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅ
Canvas API์ ๊ฐ์ ๋ค์ํ ๋๊ตฌ๋ฅผ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉ์ ์ ์ ๋ ๋๋ง์ ์ํํ ์ ์๋๋ก ํ๋ค.
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ART][Compiler] JIT ์ปดํ์ผ๋ฌ์ AOT ์ปดํ์ผ๋ฌ์ ๋ณํ ์ฌ์ฉ ์ด์ + ART ์์ (0) | 2024.07.26 |
---|---|
[Android][Flutter] Gemini๊ฐ ์๋ ค์ค ์๋๋ก์ด๋ ๋ค์ดํฐ๋ธ ๊ฐ๋ฐ vs ํ๋ฌํฐ ๊ฐ๋ฐ ๋น๊ต (0) | 2024.07.25 |
[Java] ๋ฉ์๋ ์๊ทธ๋์ฒ Method Signature (0) | 2024.07.25 |
[Java] ์ฌ๋ณผ๋ฆญ ๋ ํผ๋ฐ์ค Symbolic Reference (0) | 2024.07.25 |
[Java] ํด๋์ค ๋ก๋ (0) | 2024.07.25 |