๊นจ์•Œ ๊ฐœ๋… ๐Ÿ“‘/Android 82

[Android] Jetpack Compose - Navigation ๊ธฐ์ดˆ

#1 ๊ฐœ์š”#1-1 ์ „ํ†ต์ ์ธ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ์—์„œ์˜ Navigation [Android] Navigation - ๊ธฐ์ดˆ#1 ์ด์ „ ๊ธ€ [Android] Navigation - ํ™˜๊ฒฝ ์„ค์ • #1 Navigation#1-1 ์•กํ‹ฐ๋น„ํ‹ฐ ๋ฐ ํ”„๋ž˜๊ทธ๋จผํŠธ ๊ตฌ์„ฑ์˜ ํŠธ๋ Œ๋“œ์š”์ฆ˜ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์˜ ํŠธ๋ Œ๋“œ๋Š” ํ•˜๋‚˜์˜ ์•กํ‹ฐ๋น„ํ‹ฐ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋ž˜๊ทธ๋จผํŠธ๋‹ค. ์ด๋Š” ๊ตฌ๊ธ€์˜ ๊ถŒ์žฅ์‚ฌํ•ญkenel.tistory.com์œ„ ๊ฒŒ์‹œ๊ธ€์€ Jetpack Compose๊ฐ€ ์“ฐ์ด์ง€ ์•Š์€ ์ „ํ†ต์ ์ธ ๊ตฌ์กฐ์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ์—์„œ์˜ Navigation์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ ๊ฒŒ์‹œ๊ธ€์ด๋‹ค. #1-2 Jetpack Compose ๊ตฌ์กฐ์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”„๋กœ์ ํŠธ์—์„œ์˜ Navigation Compose๋ฅผ ์‚ฌ์šฉํ•œ ํƒ์ƒ‰  |  Jetpack Compose  |  Android Developers์ด..

[Android] Jetpack Compose - ๊ฐ์ฒด ์ง€ํ–ฅ์  UI ๋ ˆ์ด์–ด ์„ค๊ณ„

#1 ๊ฐœ์š” UI ๋ ˆ์ด์–ด | Android Developers์ด ํŽ˜์ด์ง€๋Š” Cloud Translation API๋ฅผ ํ†ตํ•ด ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. UI ๋ ˆ์ด์–ด ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜์„ธ์š”. UI์˜ ์—ญํ• ์€ ํ™”๋ฉด์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ์ดํ„ฐ๋ฅผ developer.android.com์•ˆ๋“œ๋กœ์ด๋“œ UI ์„ค๊ณ„์— ๋Œ€ํ•œ ๊ณต์‹ ๊ฐ€์ด๋“œ์— ๊ธฐ๋ฐ˜ํ•ด, ์ƒ˜ํ”Œ Jetpack Compose ์•ฑ์„ ๋งŒ๋“ค์–ด๋ณธ๋‹ค. #2 ์•ฑ ๋ฏธ๋ฆฌ๋ณด๊ธฐ#2-1 ์ž‘๋™ ํ™”๋ฉด๊ตญ๊ฐ€, ๋Œ€๋ฅ™ ๋ณ„๋กœ ๋‹ค๋ฅธ ์‹ ๋ฐœ ์‚ฌ์ด์ฆˆ๋ฅผ ์ƒํ˜ธ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ์•ฑ์ด๋‹ค. 4๊ฐœ์˜ TextField ์ค‘ ์•„๋ฌด TextField์— ๊ฐ’์ด ์ž…๋ ฅ๋˜๋ฉด "๋ณ€ํ™˜" ๋ฒ„ํŠผ์ด ํ™œ์„ฑํ™”๋˜์–ด ํด๋ฆญ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. 4๊ฐœ์˜ TextField ์ค‘ ์˜ค์ง ํ•˜๋‚˜์—๋งŒ ๊ฐ’ ์ž…๋ ฅ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ์—, ์˜ˆ๋ฅผ ๋“ค์–ด ํ•œ..

[Android] Jetpack Compose - Side-effects

#1 ๊ฐœ์š” Compose์˜ ๋ถ€์ˆ˜ ํšจ๊ณผ  |  Jetpack Compose  |  Android Developers์ด ํŽ˜์ด์ง€๋Š” Cloud Translation API๋ฅผ ํ†ตํ•ด ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Compose์˜ ๋ถ€์ˆ˜ ํšจ๊ณผ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜์„ธ์š”. ๋ถ€์ˆ˜ ํšจ๊ณผ๋Š” ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜์˜ ๋ฒ”developer.android.comJetpack Compose๋Š” ๊ต‰์žฅํžˆ ์„ ์–ธ์ ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์„ธ์‹ฌํ•˜๊ณ  ๋ณต์žกํ•œ ๋™์ž‘ ๊ตฌํ˜„์ด ์‰ฝ์ง€ ์•Š๋‹ค. Side-effects๋Š” ๊ทธ ๊ตฌํ˜„์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค. Side effects๋ฅผ ๋ฒˆ์—ญํ•˜๋ฉด, '๋ถ€์ž‘์šฉ'์ด๋ผ๋Š” ๋ง์ด ๋˜๋Š”๋ฐ, ์ด ์‚ฌ์‹ค์€ ๋งˆ์น˜ Side effects๊ฐ€ ์—๋Ÿฌ ๋ฐ ๊ทธ ์ฒ˜๋ฆฌ์™€ ๊ด€๋ จ๋˜์–ด์žˆ๋‹ค๋Š” ๋Šฌ์•™์Šค๋ฅผ ์—ฐ์ƒ์ผ€ํ•œ๋‹ค. ํ•˜์ง€๋งŒ Jetpack Compos..

[Android] Jetpack Compose - Scaffold

#1 ๊ฐœ์š”#1-1 Scaffold์˜ ์‚ฌ์ „์  ์˜๋ฏธScaffold๋Š” ๋น„๊ณ„((๊ฑด์„ค) ๋†’์€ ๊ณณ์—์„œ ๊ณต์‚ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž„์‹œ๋กœ ์„ค์น˜ํ•œ ๊ฐ€์„ค๋ฌผ)๋ผ๋Š” ๋‹จ์–ด๋กœ ๋ฒˆ์—ญ๋œ๋‹ค. #1-2 Scaffold in Jetpack Compose Jetpack Compose  |  Android Developers์ด ํŽ˜์ด์ง€๋Š” Cloud Translation API๋ฅผ ํ†ตํ•ด ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜์„ธ์š”. Scaffold ๋จธํ‹ฐ๋ฆฌ์–ผ ๋””์ž์ธ์—์„œ ์Šค์บํด๋“œ๋Š” ์Šค์บํด๋“œ๋กœdeveloper.android.comJetpack Compose์—๋„ Scaffold๋ผ๋Š” ์ด๋ฆ„์˜ ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ด Scaffold์— ๋Œ€ํ•ด ๋ˆ„๊ตฐ๊ฐ€ ๋ฌด์—‡์„ ์œ„ํ•œ ๊ฐ€์„ค๋ฌผ์ด๋ƒ๊ณ  ๋ฌป๋Š”๋‹ค๋ฉด, ๋ฐ”๋กœ ๋‹ค์–‘ํ•œ UI ์š”์†Œ๋ฅผ ์œ„ํ•œ ๊ฐ€์„ค..

[Android] LiveData - Flow๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

#1 ์ด์ „ ๊ธ€ [Kotlin] Coroutines Flow - StateFlow#1 ๊ฐœ์š” StateFlowA SharedFlow that represents a read-only state with a single updatable data value that emits updates to the value to its collectors. A state flow is a hot flow because its active instance exists independently of the presence of collectokenel.tistory.comStateFlow์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ ์ด์ „ ๊ธ€์—์„œ ์ด์–ด์ง„๋‹ค. LiveData๊ฐ€ ์“ฐ์ธ XML ๊ธฐ๋ฐ˜ View ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜์ •ํ•ด, LiveData๋ฅผ StateFlow๋กœ..

[Android] Jetpack Compose - StateFlow์™€ SharedFlow

#1 ์ด์ „ ๊ธ€ [Kotlin] Coroutines Flow - StateFlow#1 ๊ฐœ์š” StateFlowA SharedFlow that represents a read-only state with a single updatable data value that emits updates to the value to its collectors. A state flow is a hot flow because its active instance exists independently of the presence of collectokenel.tistory.comStateFlow์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ ์ด์ „ ๊ธ€์—์„œ ์ด์–ด์ง„๋‹ค. State๊ฐ€ ์“ฐ์ธ Jetpack Compose ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜์ •ํ•ด, State ๋Œ€์‹  StateFlow๋ฅผ..

[Android] Coroutines Flow - Jetpack Compose์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ

#1 ๊ฐœ์š” [Kotlin] Coroutines Flow - ๊ธฐ์ดˆ#1 Coroutines Flow#1-1 ๊ฐœ์š” FlowFlow An asynchronous data stream that sequentially emits values and completes normally or with an exception. Intermediate operators on the flow such as map, filter, take, zip, etc are functions that are applied to the upstkenel.tistory.com์œ„์—์„œ ๋‹ค๋ฃฌ Coroutines Flow๋ฅผ Jetpack Compose์— ์ ์šฉ์‹œ์ผœ๋ณธ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” '์ ์šฉ'์ด๋ž€, ๋‹จ์ˆœํ•œ ์‚ฌ์šฉ์ด ์•„๋‹ˆ๋ผ Flow ๊ฐ์ฒด๋ฅผ State๋กœ์„œ ..

[Android] Jetpack Compose - ViewModel์—์„œ State ์‚ฌ์šฉํ•˜๊ธฐ

#1 ๊ฐœ์š”Jetpack Compose์—์„œ ViewModel์„ ์‚ฌ์šฉํ•ด๋ณธ๋‹ค. Jetpack Compose๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์—์„œ์˜ ViewModel๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅผ ๊ฒŒ ์—†๋‹ค. Jetpack Compose์— ViewModel์„ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ State Hoisting ํŒจํ„ด์„ ๊ทน๋Œ€ํ™”์‹œํ‚ค๋Š” ํšจ๊ณผ๋„ ํ™•์ธํ•ด๋ณธ๋‹ค. #2 ์ฝ”๋“œ#2-1 MainActivity.kt...class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { Box( modifi..

[Android] Jetpack Compose - State Hoisting

#1 ๊ฐœ์š” ์ƒํƒœ๋ฅผ ํ˜ธ์ด์ŠคํŒ…ํ•  ๋Œ€์ƒ ์œ„์น˜  |  Jetpack Compose  |  Android Developers์ด ํŽ˜์ด์ง€๋Š” Cloud Translation API๋ฅผ ํ†ตํ•ด ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒํƒœ๋ฅผ ํ˜ธ์ด์ŠคํŒ…ํ•  ๋Œ€์ƒ ์œ„์น˜ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜์„ธ์š”. Compose ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œdeveloper.android.comState Hoisting(์ƒํƒœ ํ˜ธ์ด์ŠคํŒ…) ํŒจํ„ด์„ ์ ์šฉํ•ด ์ฝ”๋“œ์˜ ์ž ์žฌ์  ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’ํ˜€๋ณธ๋‹ค. #2 ์ฝ”๋“œ#2-1 State Hoisting ํŒจํ„ด์ด ์ ์šฉ๋˜์ง€ ์•Š์€ ์ฝ”๋“œ...class MainActivity : ComponentActivity() {    override fun onCreate(savedInstanceState: Bundle?) {  ..

[Android] Jetpack Compose - State Remembering

#1 ๊ฐœ์š” ์ƒํƒœ ๋ฐ Jetpack Compose  |  Android Developers์ด ํŽ˜์ด์ง€๋Š” Cloud Translation API๋ฅผ ํ†ตํ•ด ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒํƒœ ๋ฐ Jetpack Compose ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…์ธ ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜์„ธ์š”. ์•ฑ์˜ ์ƒํƒœ๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผdeveloper.android.comState๊ฐ€ ๊ฐ€์ง€๋Š” ์œ„์น˜ ์ œ์•ฝ ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์ œ์•ฝ์„ ํ•ด์†Œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์‚ดํŽด๋ณธ๋‹ค. #2 ์ฝ”๋“œ#2-1 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ฝ”๋“œ (State object์˜ ์œ„์น˜ ์ œ์•ฝ)@Composablefun ButtonExample(modifierParam: Modifier = Modifier) {    val count = mutableStateOf(0)    Button(     ..