๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ฑ| Android/๐Ÿš€ | Jetpack18

[Android, Kotlin] ์ƒˆ๋กœ์›Œ์ง„ Navigation Compose์˜ safe args ์ ์šฉํ•˜๊ธฐ ์„œ๋ก ์ด๋ฒˆ์— compose ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ™”๋ฉด ์ด๋™ ์‹œ ์ธ์ž๋ฅผ ์ „๋‹ฌํ•˜๋Š” safe args๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, safe args๊ฐ€ ์ด๋ฒˆ compose ์ตœ์‹  ์—…๋ฐ์ดํŠธ๋กœ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€๊ฒฝ๋œ ๊ฒƒ ๊ฐ™์•„์„œ ์ด๋ฒˆ ๊ธฐํšŒ์— ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ์ •๋ฆฌํ•ด ๋ณด๋ ค ํ•œ๋‹ค. Navigation 2.8.0์˜ safe args ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด๋ฒˆ์— Navigation์˜ ๋ฒ„์ „์ด 2.8.0-alpha08 ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜๋ฉด์„œ kotlin์˜ Serializable์„ ํ†ตํ•ด ์ธ์ž๋ฅผ ๋„˜๊ธธ ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค. Serializable์„ ํ†ตํ•ด data class๋กœ ํ™”๋ฉด์„ ์ •์˜ํ•˜๊ณ  data class์˜ ํ•„๋“œ๋กœ ๊ฐ’์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.๊ทธ๋Ÿฌ๋ฉด ๋ฐ”๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. Serializable, Navigation ์ถ”๊ฐ€lib.. 2025. 1. 23.
[Android, Kotlin] Compose์—์„œ glance๋ฅผ ์ด์šฉํ•ด ์œ„์ ฏ ๋งŒ๋“ค๊ธฐ ์ด๋ฒˆ์— ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์€ compose๋กœ ์œ„์ ฏ์„ ๋งŒ๋“œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ glance์ด๋‹ค. glance์˜ ์กด์žฌ(?)๋Š” ์ด์ „์— ๋“ค์œผ๋Ÿฌ ๊ฐ”๋˜ ์ปจํผ๋Ÿฐ์Šค ๊ฐ•์—ฐ์—์„œ glance์— ๊ด€๋ จ๋œ ๊ฐ•์—ฐ์„ ๋“ค๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ๊ทธ๋•Œ๋ถ€ํ„ฐ ๊ธฐํšŒ๊ฐ€ ๋˜๋ฉด ๊ณต๋ถ€ํ•ด ๋ณด์ž ๋ผ๋Š” ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๊ฒŒ ์ง€๊ธˆ์ด๋‹ค. glance๋Š” compose์—์„œ ์œ„์ ฏ์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๊ณ  2023๋…„ 8~9์›”์— 1.0.0์„ ์ถœ์‹œํ•œ ๋”ฐ๋ˆ๋”ฐ๋ˆํ•œ ์‹ ์ƒ(?) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ์•„๋ฌดํŠผ ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์— compose glance๋ฅผ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค. ๊ทธ๋Ÿผ ๋ฐ”๋กœ glance ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž. 1. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋จผ์ € glance ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค€๋‹ค. // glance implementation("androidx.glance:gla.. 2023. 10. 6.
[Android, Kotlin] jetpack navigation์—์„œ safe args๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌํ•˜๊ธฐ ์ตœ๊ทผ ํฌ์ŠคํŒ…์—์„œ compose์—์„œ jetpack navigation์„ ์ด์šฉํ•  ๋•Œ, data class type์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ธฐ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ดค์—ˆ๋‹ค. ์ € ๊ธฐ์ˆ ์„ ์ตœ๊ทผ์— xml์—์„œ ํ•œ ๋ฒˆ ๋” ์‚ฌ์šฉํ•  ์ผ์ด ์žˆ์—ˆ๋Š”๋ฐ, ์ด๋ฆ„์ด safe args๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์•„๋งˆ compose์—์„œ ์‚ฌ์šฉํ•œ ๊ธฐ์ˆ ๋„ safe args๋กœ ๋ถˆ๋ฆฌ๋Š” ๋“ฏํ•œ๋‹ค. https://rkdrkd-history.tistory.com/57 [Android, Kotlin] compose navigation์—์„œ data class tpye ๋„˜๊ธฐ๊ธฐ compose์—์„œ navigation์„ ์‚ฌ์šฉํ•  ๋•Œ, ํ™”๋ฉด ์ „ํ™˜ ์‹œ ๋ณ€ํ™˜๋  ํ™”๋ฉด์— ๊ธฐ์กด์˜ ํ™”๋ฉด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿด ๋•Œ์—๋Š” Navcontroller.navigate()์—๋‹ค๊ฐ€ ๋„˜๊ธธ.. 2023. 9. 26.
[Android, Kotlin] compose custom theme ๋งŒ๋“ค๊ธฐ ์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ ๋งํ–ˆ๋‹ค์‹œํ”ผ ์ปค์Šคํ…€ ํ…Œ๋งˆ์— ๋Œ€ํ•œ ๊ฐ„๋‹จ ์„ค๋ช…๊ณผ ์ฝ”๋“œ๋ฅผ ์•Œ๋ ค์ฃผ๋„๋ก ํ•˜๊ฒ ๋‹ค. ์ปค์Šคํ…€ ํ…Œ๋งˆ๋ฅผ ์™œ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•œ ์‚ฌ๋žŒ๋“ค์ด ์žˆ์„ ๊ฒƒ ๊ฐ™์•„ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด ๋Œ€ํ˜• ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค ๋ณด๋ฉด color๊ฐ€ ๋‹ค์–‘ํ•ด์งˆ ์ˆ˜ ์žˆ๊ธฐ์— ๊ธฐ๋ณธ์ ์œผ๋กœ android studio์—์„œ ์ œ๊ณตํ•˜๋Š” color palette๊ฐ€ ๋ถ€์กฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋””์ž์ด๋„ˆ๊ฐ€ ์ •ํ•œ color๋ช…์„ ๊ทธ๋Œ€๋กœ ์ ์šฉํ•˜๊ธฐ ํž˜๋“ค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋Ÿด ๋•Œ์—๋Š” custom theme๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•„์ž๋Š” ์ด๋ฒˆ ๋Œ€ํ˜• ํ”„๋กœ์ ํŠธ์— ๋Œ€๋น„ํ•ด ์ปค์Šคํ…€ ํ…Œ๋งˆ๋ฅผ ์ œ์ž‘ํ•ด ๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ž ๊ทธ๋Ÿผ ์ด์ œ ์ฝ”๋“œ๋กœ ํ•„์ž๊ฐ€ custom theme๋ฅผ ๋งŒ๋“ค์—ˆ๋˜ ๊ณผ์ •์„ ํ™•์ธํ•ด ๋ณด์ž. ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—! ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” theme ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” en.. 2023. 8. 18.
[Android, Kotlin] compose๋กœ custom checkbox ๋งŒ๋“ค๊ธฐ ์ด๋ฒˆ์— design system์„ ๋งŒ๋“œ๋Š” ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ checkbox๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•  ์ผ์ด ์žˆ์—ˆ๋‹ค. ์ด๋ฒˆ์— ํ•„์ž ๊ฐ™์€ ๊ฒฝ์šฐ ๋ง๊ณ ๋„ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ์—๋„ checkbox๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ผ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ checkbox์˜ ๋ชจ์–‘์œผ๋กœ๋Š” ๋งŒ์กฑ์Šค๋Ÿฝ์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ๋„ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์— ํ•„์ž๋Š” custom checkbox๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค. ํ•„์ž๊ฐ€ checkbox๋ฅผ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์—ˆ๋Š”์ง€ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด ๋ณด์ž. 1. custom checkbox๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ค€๋น„๋ฌผ(?) ์ผ๋‹จ ์ฒ˜์Œ ๋งŒ๋“ค ๋•Œ ํ•„์ž๋Š” custom dialog๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์ด ํ•„์š”ํ•œ์ง€ ์ƒ๊ฐํ•ด ๋ณด์•˜๋‹ค. ๊ทธ๋ž˜์„œ ํ•˜๋‚˜์˜ ๊ฒฐ๋ก ์— ๋„๋‹ฌํ–ˆ๋‹ค! check ๋˜์—ˆ์„ ๋•Œ์˜ checkbox layout, check ๋˜์ง€ ์•Š์•˜์„ ๋•Œ์˜ chec.. 2023. 8. 18.
[Android, Kotlin] compose๋กœ tablayout ๊ตฌํ˜„ํ•˜๊ธฐ ์ด๋ฒˆ์— youtube open api๋ฅผ ๋‹ค๋ฃจ๋ฉด์„œ xml์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ tablayout์„ ์ ์šฉํ•˜๊ณ  ์‹ถ์–ด์„œ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” compose tablayout ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. compose์—์„œ tablayout ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” composable function์€ tabRow์ด๋‹ค. tabrow๋Š” list๋ฅผ ์ด์šฉํ•ด ํ™”๋ฉด(tab) ๊ฐ„์˜ ์ด๋™์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ bottom navigation๊ณผ ๋น„์Šทํ•˜๋‹ค. ์ด๋ฒˆ์— tabrow๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•˜๋Š”๋ฐ ๊ธฐ์กด์— xml์—์„œ๋Š” screen๋งˆ๋‹ค fragment๋ฅผ ํ•„์ˆ˜์ ์œผ๋กœ ์ƒ์„ฑํ•ด์„œ ์—ฐ๊ฒฐํ•ด์•ผ ํ–ˆ์—ˆ๋Š”๋ฐ, compose์—์„œ๋Š” ๋”ฐ๋กœ screen์„ ๋งŒ๋“ค์ง€ ๋ง์ง€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ •ํ•  ์ˆ˜ ์žˆ์–ด์„œ ํŽธํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ฒˆ ๊ธฐํšŒ์— ํ•„์ž๋Š” screen์„ ์ƒ์„ฑํ•˜์ง€ ์•Š์€ ta.. 2023. 8. 15.
[Android, Kotlin] compose navigation์—์„œ data class tpye ๋„˜๊ธฐ๊ธฐ compose์—์„œ navigation์„ ์‚ฌ์šฉํ•  ๋•Œ, ํ™”๋ฉด ์ „ํ™˜ ์‹œ ๋ณ€ํ™˜๋  ํ™”๋ฉด์— ๊ธฐ์กด์˜ ํ™”๋ฉด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿด ๋•Œ์—๋Š” Navcontroller.navigate()์—๋‹ค๊ฐ€ ๋„˜๊ธธ ๋ฐ์ดํ„ฐ๋ฅผ param์œผ๋กœ ๋„ฃ์€ ๋‹ค์Œ์— NavHost์—์„œ composable()๋กœ navigate logic์„ ์ž‘์„ฑํ•˜๋ฉด ๋์—ˆ๋‹ค. navigation ์ค‘ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์— ๊ด€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ์•„๋ž˜ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๋“ฏํ•˜๋‹ค. https://rkdrkd-history.tistory.com/51 [Android, Kotlin] Compose UI ์ •๋ฆฌ(7) ์ด์ „ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/50 [Android, Kotlin] Compose UI ์ •๋ฆฌ(6) ์ด๋ฒˆ ํฌ์ŠคํŒ….. 2023. 8. 11.
[Android, Kotlin] compose์—์„œ api ํ†ต์‹ ํ•˜๊ธฐ ์ด์ „ ํฌ์ŠคํŒ…์˜ ์—ฐ์žฅ์„ ์ž…๋‹ˆ๋‹ค. https://rkdrkd-history.tistory.com/55 [Android, Kotlin] Android clean architecture ํ”„๋กœ์ ํŠธ์—์„œ api ์—๋Ÿฌ ํ•ธ๋“ค๋งํ•˜๊ธฐ clean architecture ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์ƒํ•˜๊ณ  ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด api error ์ฒ˜๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•˜๊ณ  ์žˆ๋Š”๊ฐ€? ์˜ˆ์ „์˜ ํ•„์ž๋Š” ๊ทธ๋ƒฅ ๋ฌด์ง€์„ฑ์œผ๋กœ(?) presentation layer์— try catch๋ฅผ ์ด์šฉํ•ด ์ฒ˜๋ฆฌ๋ฅผ ํ–ˆ์—ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ ๋ฐฉ๋ฒ•์„ rkdrkd-history.tistory.com ์ด์ „ ํฌ์ŠคํŒ…์—์„œ clean architecture ๊ด€์ ์—์„œ api error handling ๋ฐฉ๋ฒ•์„ ๊ณต๋ถ€ํ•ด ๋ดค๋Š”๋ฐ, ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ง€๋‚œ ๊ธ€์˜ ์—ฐ์žฅ์„ ์ธ clean architecture ๊ด€์ ์—์„œ compo.. 2023. 8. 3.
[Android, Kotlin] Compose UI ์ •๋ฆฌ(7) ์ด์ „ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/50 [Android, Kotlin] Compose UI ์ •๋ฆฌ(6) ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” compose ui๋กœ bottom navigation์„ ๋งŒ๋“œ๋Š” ์˜ˆ์ œ๋ฅผ ์ •๋ฆฌํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค. ์ด์ „ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/46 [Android, Kotlin] Compose UI ๊ธฐ๋ก(5) ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” compose UI ๊ณต๋ถ€ํ–ˆ๋˜ ๋‚ด์šฉ rkdrkd-history.tistory.com ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ•„์ž๊ฐ€ compose๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ์•Œ๊ฒŒ ๋œ ์ •๋ณด๋ฅผ ๋„์ ์—ฌ๋ณด๊ฒ ๋‹ค. ์ด๋ฒˆ์— ์•Œ๊ฒŒ ๋œ ์ •๋ณด๋Š” ์ œ๋ชฉ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ํ™”๋ฉด์ „ํ™˜(navigate) ๋„์ค‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. (compo.. 2023. 4. 16.
[Android, Kotlin] Compose UI ์ •๋ฆฌ(6) ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” compose ui๋กœ bottom navigation์„ ๋งŒ๋“œ๋Š” ์˜ˆ์ œ๋ฅผ ์ •๋ฆฌํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค. ์ด์ „ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/46 [Android, Kotlin] Compose UI ๊ธฐ๋ก(5) ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” compose UI ๊ณต๋ถ€ํ–ˆ๋˜ ๋‚ด์šฉ์„ ๋„์ ์—ฌ๋ณด๊ฒ ๋‹ค. ์ด์ „ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/44 [Android, Kotlin] Compose UI ์ •๋ฆฌ(4) ์ง€๋‚œ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/43 [Android, Kotlin] Compose U rkdrkd-history.tistory.com compose๋กœ bottom navigation์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€.. 2023. 4. 7.
[Android, Kotlin] Android Activity์˜ lifeCycle ์ •๋ฆฌ ์•ˆ๋“œ๋กœ์ด๋“œ๋กœ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด activity, fragment์˜ ์ƒํƒœ์— ๋”ฐ๋ฅธ ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด life cycle ํ•จ์ˆ˜๋“ค์ธ๋ฐ ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ทธ๊ฒƒ๋“ค์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. life cycle์ด๋ž€? activity, fragment๊ฐ€ ํƒœ์–ด๋‚˜์„œ(์‹œ์ž‘๋˜๋‹ค) ์ฃฝ๋Š”(์ข…๋ฃŒ๋˜๋‹ค) ์ˆœ๊ฐ„๊นŒ์ง€์˜ ์ฃผ๊ธฐ๋ฅผ ๋œปํ•œ๋‹ค. 1. Activity์˜ ์ƒ๋ช…์ฃผ๊ธฐ(lifeCycle) ๋จผ์ € activity์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ํ• ์•„๋ณผ ๊ฑด๋ฐ, activity์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋กœ๋Š” onCreate() onStart() onResume() onPause() onStop() onDestroy() onRestart() ์ด 7๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ, ๊ฐ ํ•จ์ˆ˜๋“ค์€ activity์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ํ˜ธ์ถœ์ด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“  ํ•จ์ˆ˜๋ฅผ ๊ผญ ๋‹ค ๊ตฌํ˜„ํ• .. 2023. 3. 17.
[Android, Kotlin] Compose UI ์ •๋ฆฌ(5) ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” compose UI ๊ณต๋ถ€ํ–ˆ๋˜ ๋‚ด์šฉ์„ ๋„์ ์—ฌ๋ณด๊ฒ ๋‹ค. ์ด์ „ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/44 [Android, Kotlin] Compose UI ์ •๋ฆฌ(4) ์ง€๋‚œ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/43 [Android, Kotlin] Compose UI ์ •๋ฆฌ(3) ์ด์ „ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/42 [Android, Kotlin] Compose UI ์ •๋ฆฌ(2) ์ง€๋‚œ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/41 [Android, Kot rkdrkd-history.tistory.com ์ด๋ฒˆ์— ์ •๋ฆฌํ•  ๋‚ด์šฉ์€ compose์—์„œ glide ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ.. 2023. 3. 13.
[Android, Kotlin] Compose UI ์ •๋ฆฌ(4) ์ง€๋‚œ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/43 [Android, Kotlin] Compose UI ์ •๋ฆฌ(3) ์ด์ „ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/42 [Android, Kotlin] Compose UI ์ •๋ฆฌ(2) ์ง€๋‚œ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/41 [Android, Kotlin] Compose UI ์ •๋ฆฌ(1) 1. layout 1. Column ํ•˜์œ„์˜ ๋ทฐ๋“ค์„ ์ˆ˜์ง ์ •๋ ฌํ•ด์ค€๋‹ค(verti rkdrkd-history.tistory.com ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ค˜๋˜ compose recyclerview๋ฅผ ์ด์šฉํ•ด ์‹ค์Šต์„ ํ•ด๋ณด๊ฒ ๋‹ค. ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค ์ƒ์„ฑ data c.. 2022. 12. 5.
[Android, Kotlin] Compose UI ์ •๋ฆฌ(3) ์ด์ „ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/42 [Android, Kotlin] Compose UI ์ •๋ฆฌ(2) ์ง€๋‚œ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/41 [Android, Kotlin] Compose UI ์ •๋ฆฌ(1) 1. layout 1. Column ํ•˜์œ„์˜ ๋ทฐ๋“ค์„ ์ˆ˜์ง ์ •๋ ฌํ•ด์ค€๋‹ค(vertical). // ํ…์ŠคํŠธ ๋ทฐ @Composable fun Greeting(name: String) { Text(text = name) } // ๋ทฐ๋ฅผ rkdrkd-history.tistory.com ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•œ ๋ทฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ๋‹ค. 3. Scrollable View 1. ScrollView scrollView์— ์‚ฌ์šฉํ•  ์•„์ดํ…œ ์ƒ์„ฑ @.. 2022. 12. 4.
[Android, Kotlin] Compose UI ์ •๋ฆฌ(2) ์ง€๋‚œ ํฌ์ŠคํŒ… https://rkdrkd-history.tistory.com/41 [Android, Kotlin] Compose UI ์ •๋ฆฌ(1) 1. layout 1. Column ํ•˜์œ„์˜ ๋ทฐ๋“ค์„ ์ˆ˜์ง ์ •๋ ฌํ•ด์ค€๋‹ค(vertical). // ํ…์ŠคํŠธ ๋ทฐ @Composable fun Greeting(name: String) { Text(text = name) } // ๋ทฐ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ณณ(๋ฏธ๋ฆฌ๋ณด๊ธฐ) @Preview(showBackground = true) @Composable fun DefaultPreview() { rkdrkd-history.tistory.com ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ•„์ž๊ฐ€ xml์„ ์‚ฌ์šฉํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ทฐ๋“ค์„ compose๋กœ ์ž‘์„ฑํ•ด๋ณด๊ฒ ๋‹ค. 2. ๋‹ค์–‘ํ•œ ๋ทฐ ์ž‘์„ฑ 1. edit text TextField.. 2022. 12. 3.
[Android, Kotlin] Compose UI ์ •๋ฆฌ(1) ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” jetpack compose 1. layout 1. Column ํ•˜์œ„์˜ ๋ทฐ๋“ค์„ ์ˆ˜์ง ์ •๋ ฌํ•ด์ค€๋‹ค(vertical). // ํ…์ŠคํŠธ ๋ทฐ @Composable fun Greeting(name: String) { Text(text = name) } // ๋ทฐ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๊ณณ(๋ฏธ๋ฆฌ๋ณด๊ธฐ) @Preview(showBackground = true) @Composable fun DefaultPreview() { ComposeUITheme { // ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ํ…Œ๋งˆ Column() { Greeting("Hello") Greeting("Android") } } } 2. Row ํ•˜์œ„์˜ ๋ทฐ๋“ค์„ ์ˆ˜ํ‰ ์ •๋ ฌํ•ด์ค€๋‹ค(horizontal). @Preview(showBackground = true) @Comp.. 2022. 12. 1.
[Android Kotlin] navigation component์— bottom navigation ์—ฐ๊ฒฐ ํ–ˆ์„๋•Œ, bottom navigation์ด ์ž‘๋™๋˜์ง€ ์•Š์„๋•Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์˜ค๋Š˜์˜ ๊ธฐ๋ก์€ navigation component๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ bottom navigaion์„ ์‚ฌ์šฉํ•  ๋•Œ, bottom navigaion์ด์ž‘๋™๋˜์ง€ ์•Š์„๋•Œ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค. ๋ฌธ์ œ ์ƒํ™ฉ ํด๋ฆญ๋งŒ ๋˜๊ณ  ํ™”๋ฉด์ด ๋ฐ”๋€Œ์ง€ ์•Š์•˜๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” menu xml์˜ ์ด๋ฆ„์„ ์ž˜ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. ๋ฌธ์ œ ์ฝ”๋“œ naviagtion ํ™”๋ฉด๊ณผ ๋ฌธ์ œ ์ฝ”๋“œ์˜ ์•„์ด๋””๊ฐ€ ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. freeBoardFragment - FreeBoardFragment menu ์ฝ”๋“œ์˜ ๋Œ€๋ฌธ์ž๊ฐ€ ๋‹ฌ๋ผ์„œ bottom navigation์ด ์ž‘๋™๋˜์ง€ ์•Š์•˜๋‹ค.์ด๊ฒƒ์„ ๊ณ ์ณ์„œ ์™„์ „ํžˆ ํ•ด๊ฒฐํ–ˆ๋‹ค. 2022. 4. 22.
[Android] Room ์‚ฌ์šฉ๋ฒ•๊ณผ RecyclerView๋ฅผ ํ™œ์šฉํ•œ ์˜ˆ์ œ ์ด๋ฒˆ ์˜ˆ์ œ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ๊ฐ€์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ room์„ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , ๊ทธ๊ฒƒ์„ recyclerview์— ๋ณด์ด๊ฒŒ ํ•˜๋Š” ์˜ˆ์ œ๋ฅผ ํ•ด๋ณด๊ฒ ๋‹ค. room ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € gradle์— ์ถ”๊ฐ€๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. build.gradle(app) plugins { id 'kotlin-kapt' ... } android { ... } dependencies { implementation "androidx.room:room-runtime:2.4.2" kapt "androidx.room:room-compiler:2.4.2" } ์ถ”๊ฐ€๋ฅผ ํ•˜๊ณ  ๋‚˜์„œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋“ค์–ด๊ฐˆ ๋ฐ์ดํ„ฐ๋“ค์„ ๋งŒ๋“ค์ค˜์•ผ ํ•œ๋‹ค. 1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ์ฒด ํด๋ž˜์Šค ์ƒ์„ฑ @Entity(tableName = "chat_table") class Chat.. 2022. 4. 12.
728x90
๋ฐ˜์‘ํ˜•