๐ฑ| Android/๐ | ๊ธฐ๋ก20 [Android] thread์ ํจ๊ป ์์๋ณด๋ coroutine, flow์ ๋ํ ๊ณ ์ฐฐ ์ด๋ฒ ๊ณ ์ฐฐ์ ์ฃผ์ ๋ coroutine์ด๋ค.kotlin์ ์ฌ์ฉํ๊ฑฐ๋, ์ฌ์ฉ ์ค์ธ ๊ฐ๋ฐ์๋ค์๊ฒ๋ ํญ์ ๋ฐ๋ผ๋ค๋๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๊ฐ๋ ์ด๋ค.์ด๋ฒ ํฌ์คํ ์ผ๋ก ํ์คํ๊ฒ ๊ถ๊ธํ๋ ๊ฒ๋ค์ ๊ณต๋ถํ๋ฉด์ ์ง๊ณ ๋์ด๊ฐ ์์ ์ด๋ค. coroutine์ด๋?coroutine์ thread ์์์ ์คํ๋๋ ์ผ์ ์ค๋จ ๊ฐ๋ฅํ ์์ ๋จ์์ด๋ค.ํ๋์ thread์์ ์ฌ๋ฌ coroutine์ด ์๋ก thread๋ฅผ ์๋ณดํด ๊ฐ๋ฉฐ ์คํ๋ ์ ์๋ค. ๊ทธ๋ฌ๋ฉด ์ด์งธ์ coroutine์ด ์๊ฒจ๋๊ฒ ๋ ๊ฑธ๊น? coroutine์ ์ ์ฌ์ฉํ๊ฒ ๋์์๊น?thread ๊ธฐ๋ฐ์ ๋ค์ค thread ์์ ์ ํ๊ณcoroutine ์ด์ ์ ๋์์ฑ ์์ ์ ๋ชจ๋ thread ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฃจ์ด์ก๋ค.thread ๊ธฐ๋ฐ์ผ๋ก ์์ ์ ์ํํ๊ฒ ๋๋ฉด thread 1์ ์์ ์ด ์งํ๋๋ ์ค์ ๋ค๋ฅธ.. 2024. 11. 12. [Android] liveData, stateFlow์ ํจ๊ป ๋ณด๋ MVVM์ ๋ํ ๊ณ ์ฐฐ ์ด๋ฒ ํฌ์คํ ์์๋ ์ ๋ฒ ํฌ์คํ ์์ ์ธ๊ธํ๋ค์ํผ, clean architecture์ ํจ๊ป ์ค๋ฌด์์ ๋ฐํ์์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋์์ธ ํจํด์ธ mvvm์ ๋ํด ๊ณต๋ถํด์ ์ ์ด๋ณด๊ณ ์ ํ๋ค.๋ง์ฐฌ๊ฐ์ง๋ก ๊ณต๋ถํ๋ฉด์ ์ฐธ๊ณ ํ ํฌ์คํ ๋ ๊ฐ์ด ๋งํฌ๋ก ๋จ๊ฒจ ๋๊ฒ ๋ค. MVVM์ ๋ฌด์์ผ๊น?MVVM์ ๊ดํด์๋ ์ฐพ์๋ณด๋ฉด ์๋ฃ๊ฐ ๋ง์ด ๋์ค๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ๊ฒ ์ ์ํด ๋ณด๋ฉด,MVC์ MVP์์ view์ ์ฎ์ด๋ ์์กด์ฑ์ ํด๊ฒฐํ๊ธฐ ์ํด view model์ ๋์ ํ ๋์์ธ ํจํด.MVVM์ model, view, view model์ ์ฝ์๋ค. ์ฌ๊ธฐ์ view model๊ณผ view๋ 1 : n์ ๊ด๊ณ๋ฅผ ๊ฐ์ง ์ ์๋ค๋ ํน์ง์ ์ง๋๋ค. MVVM์ ์ ์ฐ๋ ๊ฑธ๊น?mvvm ๋์์ธ ํจํด์ ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ ๊ฐ์ง๋ค.์์กด์ฑ ์ต์ํview๋ view model์.. 2024. 11. 11. [Android] hilt์ ํจ๊ป ๋ณด๋ clean architecture์ ๋ํ ๊ณ ์ฐฐ ์ด๋ฒ ํฌ์คํ ์์๋ Android ๊ฐ๋ฐ์์ ์ clean architecture๋ฅผ ์ฌ์ฉํ๋์ง, ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ clean architecture์ ๊ดํด์ ๊ถ๊ธํ๋ ๊ฒ๋ค์ ๊ณต๋ถํด์ ์ ์ด ๋ณด๊ณ ์ ํ๋ค. ๋ด๊ฐ ๊ณต๋ถํ๋ฉด์ ์ฐธ๊ณ ํ ํฌ์คํ ๋ ํจ๊ป ๋จ๊ธธ ํ ๋ ๋ํ ๋ด์ฉ์ด ๊ถ๊ธํ๋ฉด ํ์ธํด ๋ณด๋ ๊ฒ๋ ์ข๊ฒ ๋ค. clean architecture์ ์ ์์ ์๋ ๋ค๋ฅธ ํฌ์คํ ์๋ ์์ฃผ ์ธ๊ธ๋๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๊ฒ ๋ค.clean architecture๋ ์ํํธ์จ์ด ์์คํ ์ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ ๋ ์ง์ผ์ผ ํ ์์น๊ณผ ๋ฐฉ๋ฒ์ ์ ์ํ ๊ฐ๋ .๋ณต์กํ ์ํํธ์จ์ด ์์คํ ์ ๋ณด๋ค ๊ด๋ฆฌ ๊ฐ๋ฅํ๊ณ ์ ์ง ๋ณด์ ๊ฐ๋ฅํ ํํ๋ก ๊ตฌ์ถํ๊ธฐ ์ํ ์ง์นจ์ ์ ๊ณตํ๋ค. ๊ฐ๋จํ๊ฒ ์์ฝํ์๋ฉด, ๊ท๋ชจ๊ฐ ํฐ ์ํํธ์จ์ด๋ฅผ ์ค๊ณํ ๋ ์ง์ผ์ผ ํ๋ ๊ตฌ์กฐ ๊ฐ์ ๊ฑฐ๋ผ๊ณ ์ดํดํ๋ฉด ๋ ๊ฒ ๊ฐ.. 2024. 11. 8. [Android, Kotlin] RecyclerView๋ฅผ ListAdapter๋ฅผ ์ด์ฉํด ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ด๋ฒ ํฌ์คํ ์๋ ๋ด์ผ๋ฐฐ์์บ ํ์์ ๊ณต๋ถํ๋ฉด์ ์๊ฒ ๋ ListAdapter๋ฅผ ์ฌ์ฉํ๋ฉด์ ์๊ฒ ๋ ListAdapter๋ฅผ ์ด์ฉํด RecyclerView๋ฅผ ๊ตฌํํ ์์ ๋ฅผ ์ฌ์ฉ๋ฒ๊ณผ ํจ๊ป ์ ์ด๋ณด๊ฒ ๋ค.์ฌ์ค ๊ธ์์ผ ํน๊ฐ์ ์ ๋ถ ๋ฃ์ง ๋ชปํด์ ๊ฐ์ธ์ ์ผ๋ก ๊ณต๋ถํ ๋ด์ฉ๊ณผ ๋ ธ์ ์ ์ ํ ๊ธ, ๋ นํ ๊ฐ์๋ฅผ ์ฐธ๊ณ ํด์ ์ ์ ํผํฉ๋ฌผ(?)์ด๋ค. ListAdapter๋ฅผ ์์๋ณด๊ธฐ ์ ์ ์ ListAdapter๊ฐ ์๊ธฐ๊ฒ ๋์๋์ง ๊ฐ๋จํ๊ฒ ์์๋ณด์. ์์ ์ RecyclerView ์๋ ์ฒด์ ๊ธฐ์กด์ RecyclerView์์๋ ์ฌ์ฉ์๊ฐ ๋ฆฌ์คํธ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ, ์ญ์ ํ๊ณ ์ ํ ๋, adapter์ notifyDataSetChanged()๋ฅผ ์ฌ์ฉํด adapter์ ๋ฆฌ์คํธ๊ฐ ๋ณ๊ฒฝ๋์์์ ์๋ ค์ผ ํ๋ค.์๋ฆผ์ ๋ฐ์ adpater์์๋ ์ถ๊ฐ, ์ญ์ ๋ ๋ฐ์ดํฐ.. 2024. 7. 15. [Android, Kotlin] android์์ Junit์ผ๋ก ํ ์คํธ ์ฝ๋ ์์ฑํ๊ธฐ ์ด๋ฒ์ ์ ๋ฆฌํ ๋ด์ฉ์ ํ ์คํธ ์ฝ๋์ด๋ค. ๋ค๋ค ํ ์คํธ ์ฝ๋๋ผ๋ ๋ง์ ๋ค์ด๋ณธ ์ ์ ์์ด๋ ์ฌ์ฉ๋ฒ์ ๋ชฐ๋ผ์ ์ฌ์ฉํ์ง ์์๋ ๊ฒฝ์ฐ๋ ์์์ ๊ฒ์ด๊ณ , ์ฅ์ ์ ๋ํด์๋ ๋ค์์ง๋ง ํ ์๋ฟ์ง ์์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์์์ ์๋ ์์ ๊ฒ์ด๋ค. ํ์์ ๊ฒฝ์ฐ์๋ 2๊ฐ์ง ๋ชจ๋ ํด๋น์ฌํญ์ด์๋ค ใ ใ ํ์ง๋ง ์ด๋ฒ์ ์น๊ตฌ๋ค์ด๋ ํ๋ ๋ํ ํ๋ก์ ํธ์์ ํํธ๋ณ ๊ฐ๋ฐ์ ํ๋ ์ค ๋ด๊ฐ ์ฝ๋๋ฅผ ์ ์์ฑํ๊ณ ์๋ ๊ฑธ๊น?๋ผ๋ ์๋ฌธ์ด ๋ค์ด ํ ์คํธ ์ฝ๋์ ๋ํด ๊ณต๋ถํ๊ณ ์ด๋ฒ ๊ธฐํ์ ํฌ์คํ ์ผ๋ก ๋จ๊ฒจ๋ณผ๊น ํ๋ค. ๊ทธ๋ฌ๋ฉด ๋ฐ๋ก ํ ์คํธ ์ฝ๋์ ๋ํด ๊ฐ๋จํ ์์๋ณด๊ณ ์ฝ๋ ์์ ๋ก ๊ฐ์ด ํ์ธํด ๋ณด๋๋ก ํ์. 1. ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ด์ ? ํ ์คํธ ์ฝ๋๋ ์๋๋ก์ด๋ ์ฑ์ ๊ฐ๋ฐํ๋ฉด์ ํน์ ๋ก์ง์ ํ ์คํธํ๋ฉด์ ๊ธฐ๋ฅ์ ๋ฌธ์ ๋ ์ค๋ฅ๋ฅผ ์ฐพ์๋ด ์ฃผ๋ ์ฝ๋๋ฅผ ๋ปํ๋ค. ํ ์ค.. 2023. 9. 28. [Android, Kotlin] ์๋๋ก์ด๋์์ line chart ๋ง๋ค๊ธฐ ์ด๋ฒ์ ๊ณต๋ถํ ๋ด์ฉ์ android studio์์ ์ฐจํธ(๊ทธ๋ํ)๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ณต๋ถํด ๋ณด์๋ค. ์ด๋ฒ ํฌ์คํ ์ ์ฐจํธ ๋ง๋ค๊ธฐ์ ๋ํด ๊ณต๋ถํ๋ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. ์ฌ์ค ์๋ ์๋ ์ฐจํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝํ์ด ์์์ง๋ง, ์ด๋ฒ์ ๋ค์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ฒผ๊ธฐ์ ์ด๋ฒ ๊ธฐํ์ ์ ๋ฆฌํด ๋ณด๋ ค ํ๋ค.(์๋ ์ ๊ณต๋ถํ๋ ๋ด์ฉ์ ๊ฑฐ์ ๋ค ๊น๋จน์ด์ ์ฒ์๋ถํฐ ๋ค์ ๊ณต๋ถํ์๋ค >:( ) ์ฐจํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ค์ํ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก๋ ๋ค๋ฅธ ๋ถ๋ค์ด ๋ง๋ค์ด์ค ์ฐจํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ํธํ ๊ฒ์ด๋ค. ๊ทธ๋ฅ android chart library๋ผ๊ณ ๊ฒ์ํด๋ ๋ค๋ฅธ ๋ถ๋ค์ด ์ด๋ฏธ ๋ง๋ค๊ณ ์ฌ์ฉ ์ค์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ค์ ์กด์ฌํ๋ค. ์๋๋ฉด ์์ ์ด ์ง์ custom ํด์ ๋ง๋ค๊ณ ์ถ์ผ๋ฉด android์์ ์ ๊ณตํ๋ canvas๋ฅผ ์ด์ฉํด .. 2023. 9. 28. [Android, Kotlin] android์์ in-app updates๋ก ์ฑ ์ ๋ฐ์ดํธ ๊ด๋ฆฌํ๊ธฐ ์ด๋ฒ์ ์ ๋ฆฌํ ์ฃผ์ ๋ ๋ฐ๋ก ์ฑ ์ ๋ฐ์ดํธ์ ๊ดํ ์ฌํญ์ด๋ค. ๋ด๊ฐ ์ด๋ฒ์ ์ฑ ์ ๋ฐ์ดํธ์ ๊ดํด ์ ๋ฆฌ๋ฅผ ํ ์ด์ ๋ ํ์๊ฐ ์ฑ์ ํ๋ ์ถ์ํ์๋๋ฐ ๊ทธ๊ฒ์ ์ฌ์ฉํ๋๋ฐ ์ฌ์ฉ์๋ค์ด ์ฑ ์ ๋ฐ์ดํธ๋ฅผ ํ์ง ์๊ณ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ง์ด ๋ณด์๊ธฐ ๋๋ฌธ์ด๋ค. 0. ์ ์ฌ์ฉํด์ผ ํ ๊น? ์ด๋ฐ ๊ฒฝ์ฐ ์ฑ ์ ๋ฐ์ดํธ๋ฅผ ํ์ง ์์๋ ์๊ด์๋ค๋ ์ด์ผ๊ธฐ๋ ํ ์ ์๋ค. ํ์ง๋ง ์ ๋ฐ์ดํธ๋ฅผ ํ์ง ์์ผ๋ฉด ์ ๋ฒ์ ์ ์ถ์ํ๋ฉด์ ์์ ํ๋ ์ค๋ฅ๋ฅผ ์ ๋ฐ์ดํธ๋ฅผ ํ์ง ์์ ๊ธฐ์กด ์ฑ์์๋ ๊ทธ๋๋ก ์ค๋ฅ๊ฐ ๋จ์์์ ํ๋ฅ ์ด ๋๋ค. ๊ทธ๋์ ์ด๋ฒ ๊ธฐํ์ ๊ตฌ๊ธ์์ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ in-app updates๋ฅผ ์ด์ฉํด์ ์ฌ์ฉํ๋ ๊ฒฝํ์ ๊ธฐ๋ก์ผ๋ก ๋จ๊ฒจ๋ณด๋๋ก ํ๊ฒ ๋ค. 1. in-app updates๋ ๋ฌด์์ผ๊น? in-app updates๋ ๊ตฌ๊ธ์์ ์ ๊ณตํ๊ณ ์๋ ์ฌ์ฉ์๊ฐ ์ฑ ๋ด.. 2023. 9. 9. [Android, Kotlin] exoplayer์ media3๋ฅผ ์ด์ฉํด ์์ ์ฌ์ํ๊ธฐ ์ด๋ฒ์๋ ํ์๊ฐ ์์ฃผ ์์ฒญํ๋ youtube๋ฅผ ๋ณด๊ณ youtube๊ฐ exoplayer๋ฅผ ์ด์ฉํด ์ ์๋์๋ค๋ ๋ง์ ๋ค์๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ๊ธฐํ์ exoplayer๋ฅผ ๊ณต๋ถํด ๋ณด๊ธฐ๋ก ํ๋ค. ์ด๋ฒ์ exoplayer ์์ ๋ ํ๋ก์ ํธ ์์ mp4 ํ์ผ์ ๋ถ๋ฌ์ค๋ ๊ณผ์ ์ ๋ด์๋ค. ์ฐธ๊ณ ๋ก ํ์ฌ ์์ฃผ ์ฌ์ฉํ๋ compose๋ฅผ ์ด์ฉํด ๊ตฌํํด ๋ณด๊ฒ ๋ค. exoplayer๋ ๋ฌด์์ผ๊น? exoplayer๋ android์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฏธ๋์ด ์ฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. 1. dependency ์ถ๊ฐ exoplayer์ media3์ ์ฌ์ฉํ๊ธฐ ์ํด dependency๋ฅผ ์ถ๊ฐํ๋ค. // exoplayer compose implementation("com.google.android.exoplayer:exoplayer:2.19.1") impl.. 2023. 8. 25. [Android] MVI ํจํด์ ๋ฌด์์ผ๊น? ์์ฆ์ compose๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์ถ์ธ์ด๋ค. ํ์๋ compose๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ค. ํ์๊ฐ ์ง์ธ๋ค์๊ฒ compose์ mvi๋ฅผ ์ฌ์ฉํ๋ฉด ์ข๋ค๋ ์์์ ๋ฃ๊ณ ๋ฐ๋ก mvi ๊ณต๋ถ๋ฅผ ์์ํ๋ค. ์ง๊ธ ๋ฐ๋ก mvi์ ๋ํด ์์๋ณด์. 1. mvi๋? mvi ์ํคํ ์ฒ๋ mvc, mvp, mvvm์ ๊ฐ์ ์๋๋ก์ด๋ ๊ฐ๋ฐ์๋ค์ ๊ฐ๋ฐ๊ณผ ์ ์ง ๋ณด์๋ฅผ ํธ๋ฆฌํ๊ฒ ํด์ฃผ๋ ์ํคํ ์ฒ ํจํด์ ์ผ์ข ์ด๋ผ ํ ์ ์๋ค. mvi์ ๊ตฌ์กฐ๋ model - view - intent๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ layer๋ ์๋ก ์์ ํ ๊ด์ฌ์ฌ๊ฐ ๋ถ๋ฆฌ๋์ด ์๋ค. sideEffects๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ (api ํต์ , ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์์ ์ฒ๋ฆฌํ ๋ก์ง)๊ณผ ์ธ์คํด์ค ๋ทฐ(screen ๊ฐ ์ด๋, toast์ dialog)๋ฑ์ ์ฒ๋ฆฌํ๋ค. sideEffects.. 2023. 8. 21. [Android, Kotlin] Android clean architecture ํ๋ก์ ํธ์์ api ์๋ฌ ํธ๋ค๋งํ๊ธฐ clean architecture ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ํ๊ณ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด api error ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํ๊ณ ์๋๊ฐ? ์์ ์ ํ์๋ ๊ทธ๋ฅ ๋ฌด์ง์ฑ์ผ๋ก(?) presentation layer์ try catch๋ฅผ ์ด์ฉํด ์ฒ๋ฆฌ๋ฅผ ํ์์๋ค. ํ์ง๋ง ๊ทธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ ๋, ์ผ์ผ์ด try catch๋ฌธ์ ์์ฑํด์ผ ํ๋ ๋ถํธํจ๊ณผ presentation layer์์๋ง ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๋ง๋ ์ด๋ฐ ์๋ฌธ๋ค์ด ๋ค๊ธฐ ์์ํ๋ค. ๊ทธ๋์ ์ด๋ฒ ํฌ์คํ ์์ clean architecture project์์ api error handling logic์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๊ณต๋ถํ๊ณ ์ ์ด๋ณด์๋ค. 1. error handling ๋ก์ง์ ์ด๋ค layer์ ์์ฑ๋์ด์ผ ํ๋๊ฐ?? ํ์๋ data layer์์ http status code์ ๋ฐ๋ฅธ ์.. 2023. 8. 1. [Android, Kotlin] Android MVVM ๋ค๋ค๋ณด๊ธฐ ์ด๋ฒ์ ํ์๊ฐ ๊ณต๋ถํด๋ณธ ๊ฒ์ MVVM์ด๋ค. MVVM์ View - Model - ViewModel์ ์ฝ์์ธ๊ฑด ๋ค ์๊ณ ์๋ ์ฌ์ค์ด๋ ๊ทธ๋ฅ ๋๊ธฐ๊ณ (?) ํ์๋ ์ค๋์ ๋ถํฐ ์ฌ์ฉํด์๋ ์๋๋ก์ด๋ ์ํคํ ์ฒ์ด์ง๋ง ์ฐ๋ ์ด์ ์ ๊ฐ ํ์ผ๋ค์ด ์ ํํ ๋ฌด์์ ์ํ ํ์ผ๋ค์ธ์ง ์ ์์ง ๋ชปํ๊ธฐ์ ์ด๋ฒ ๊ธฐํ์ ์ ๋ฐ๋ก ์์๋ณด๊ณ ์ ํ๋ค. 1. MVVM์ ๊ตฌ์กฐ MVVM์ ์ด๋ฆ์์๋ ์ ์ ์๋ฏ์ด View, Model, ViewModel๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. View: ์ด๋ฒคํธ ๋ฐ์, liveData ๊ฐ์งํด ๋ทฐ์ ์ถ๋ ฅํ๋ค(์ถ๋ ฅ์ธ๊ฐ). Model: ์ค์ง์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๊ณณ(DB, Api ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ ์ ์(?)ํ๋ค.) ViewModel: ํ๋ก์ ํธ์ ๋น์ฆ๋์ค ๋ก์ง์ ๊ด๋ฆฌํ๋ค(Api ํธ์ถ, DBํธ์ถ ์ด๋ฐ๊ฑฐ). ์ฃผ์ํ ์ ์ View์ Mod.. 2023. 3. 18. [Android, Kotlin] Zxing ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก QR์ฝ๋ ์ค์บํ๊ธฐ ์ค๋๋ง์ ํฌ์คํ ์ ํด๋ณธ๋ค. ์์ฆ ์ข ๋ฐ๋น ์ ใ ใ (์ฌ์ค ๊ท์ฐฎ๊ธฐ๋ ํ๊ณ ๊น๋จน์์ด์ ๋ชป ์ฌ๋ ธ๋ค ์ฃ์กํฉ๋๋ค.) ์๋ฌดํผ ์ด๋ฒ์ ์ฌ์ฉํด ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ zxing ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ๋ฐ, ์ด๋ฒ ํ๋ก์ ํธ์ QR์ฝ๋ ์ค์บ ๊ธฐ๋ฅ์ด ๋ค์ด๊ฐ ์์ ์ด๋ผ ๊ฒ์์ ํด๋ดค๋๋, Zxing ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๊ธธ๋ ๋ฐ๋ก ์ฌ์ฉํด ๋ณด์๋ค(ํคํค) ๊ฐ์๋ฆฌ๋ ์ฌ๊ธฐ๊น์ง ํ๊ณ ๋ฐ๋ก Zxing์ ๋ํด ์์๋ณด์ 1. dependency ์ถ๊ฐ,์ธํ build.gradle(app)build.gradle(app) // zxing implementation 'com.journeyapps:zxing-android-embedded:4.2.0' // circle imageview(์์ ์์ ์ฌ์ฉ) implementation 'de.hdodenhof:circleimageview:3.. 2023. 3. 11. [Android, Kotlin] android custom dialog ๋ง๋ค๊ธฐ custom dialog๋ ์๋๋ก์ด๋๋ฅผ ๊ฐ๋ฐํ๋ฉด์ ์์ฃผ ์ฐ์ด๋ ํ์ ์ฐฝ์ ์์ฑํด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค. ํ์๋ ๋ง์ด ์์ฃผ ์ฐ์ง๋ง, ๋ง์ด ๊น๋จน๊ธฐ(?) ๋๋ฌธ์ ์ด๋ฒ์ ๊ธฐ๋ก์ ๋จ๊ฒจ๋ณด๋ ค ํ๋ค. custom dialog ๋ง๋๋ ๋ฐฉ๋ฒ 1. custom dialog๋ก ์ฌ์ฉํ xml ํ์ผ ๋ง๋ค๊ธฐ ๋จผ์ dialog์ xml๋ก ๋ ์ด์์์ ๋ง๋ค์ด ์ค๋ค. 2. ๋ค์ด์ผ๋ก๊ทธ ์์ฑํ๊ธฐ ์ผ๋จ ํ์๋ ๋ค์ด์ผ๋ก๊ทธ๋ฅผ ๋ทฐ ๋ฐ์ธ๋ฉ์ผ๋ก ๊ตฌํ ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๋๋ค์ ์ถ๊ฐํด์ฃผ์๋ค. viewBinding { enabled = true } ๊ทธ ๋ค์์ ๋ค์ด์ผ๋ก๊ทธ๋ฅผ ๊ตฌํํ๋ค.(ํ์๋ fragment์ ๋ค์ด์ผ๋ก๊ทธ๋ฅผ ๊ตฌํํ๋ค.) activity?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) v.. 2022. 11. 20. [Android, Kotlin] Android์์ Apollo๋ฅผ ์ด์ฉํ GraphQL์ฌ์ฉํ๊ธฐ ํ์ฌ ํ์๋ graphql๋ฅผ ์ด์ฉํ ํ๋ก์ ํธ๋ฅผ ์ค๋น ์ค์ด๊ธฐ ๋๋ฌธ์ graphql์ ์ด์ฉํ apollo์ ๋ํด ๋ด๊ฐ ๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค. Apollo๋ android์์ graphql์ ๋ ์ฝ๊ฒ ์ด์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. 1. Apollo ์ค์นํ๊ธฐ apollo๋ฅผ android์์ ์ด์ฉํ๊ธฐ ์ํด์๋ node.js๋ฅผ ์ค์นํด์ผ ํ๋ค. https://javacpro.tistory.com/62 [Node.js] Node.js ์ค์นํ๊ธฐ (Windows10) Node.js ์ค์นํ๊ธฐ Node.js ์ค์น๋ ๋งค์ฐ ๊ฐ๋จํ๋ค . ์ฐ์ ์๋ URL ์ ๋ฐ๋ผ Node.js ์ฌ์ดํธ์ ์ ์ํ๋ค. https://nodejs.org/en/ ๊ทธ๋ผ ์์ ๊ฐ์ด ํ๋ฉด์ด ๋์ค๋๋ฐ ๋จผ์ ์ข์ธก์ผ๋ก๋ ์ต์ ๋ฒ์ ์ธ๋ฐ ๊ฐ๋ฐ๊ณต๋ถ๋ฅผ ๋ชฉ.. 2022. 10. 23. [Android, Kotlin] editText์ toggle icon์ด ๋ฐ๋๋ก ๋์์ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ TextInputEditText ๊ธฐ๋ณธ edittext์ ๋ค๋ฅด๊ฒ ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ง์ํ๋ edit text์ ํ ์ข ๋ฅ์ด๋ค. TextInputEditText์๋ ๊ฐ๋ ค์ผ ํ ํ ์คํธ(๋น๋ฐ๋ฒํธ)๊ฐ ์๋ ๊ฒฝ์ฐ passwordToggleEnabled๋ผ๋ ์ต์ ์ ์ฌ์ฉํ ์ ์๋ค. ํ์ง๋ง passwordToggleEnabled ์ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ์ด์ํ ๋ฌธ์ ๋ฅผ ๋ง๋ ์ ์๋๋ฐ ๋ฐ๋ก ๋น๋ฐ๋ฒํธ๋ ๋ณด์ด์ง๋ง ์์ด์ฝ์ ๋์ ๊ฐ๋ฆฌ๊ณ (?) ์๊ฒ ๋จ๋ ๋ฌธ์ ! ์ด๋ฒ์๋ ์ด ๋ฌธ์ ๋ฅผ ๋ด๊ฐ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ ๋ํด ํฌ์คํ ์ ํ๊ฒ ๋ค. ๋จผ์ toggle icon์ด ํด๋ฆญ๋์์ ๋ ๋์ค๊ฒ ํ๋ ์์ด์ฝ๋ค์ ์ค์ ํ๋ค. toogle_icon_status.xml ํด๋ฆญ๋์๊ฑฐ๋ ์๋ ๋์ ์์ด์ฝ์ ์๋ฌด๊ฑฐ๋ ์ ํด๋ ์๊ด์๋ค. ํ์ฌ edittext๊ฐ ์๋ xml ํ์ผ.. 2022. 8. 31. ์ด์ 1 2 ๋ค์ 728x90