์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ์ญํด
- Coroutine
- Compose
- ์๋๋ก์ด๋ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ
- ์ฝ๋ฃจํด
- Jetpack Compose
- ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ
- ์์กด์ฑ ์ฃผ์
- DI
- 2์ฝ
- ์ฝ์ธ
- ์๋๋ก์ด๋
- Kotlin
- android Koin
- android DI
- binding
- BaseObservable
- 1์ฝ
- animation-list
- textstyle
- previewparameterprovider
- databinding
- ๋ฐ์ธ๋ฉ
- ์์กด์ฑ
- ์ญํ์ ๋๊ฐ์ฐจ๊ธฐ
- ๊ฐ๋ฐ์ฐจ๊ธฐ
- android
- koin
- data
- android hilt
- Today
- Total
๋ชฉ๋กandroid (11)
๐ป ๊ฐ๋ฐ์ฐจ๊ธฐ ๐ฅ feat.Android

์ด์ Coroutine ๊ธ์ ์ด์ด ์ถ๊ฐ์ ์ผ๋ก ๊ธ์ ์ฐ๋ คํ๋ค. ์๋๋ก์ด๋์์ ์ฝ๋ฃจํด / Coroutine ์จ๋ด ์๋ค - 0 ์ฝ๋ฃจํด์ด๋! ๋ป : ์ฝ๋ฃจํด(Coroutine)์ Co- Routine์ ํฉ์ฑ์ด์ธ๋ฐ Co(์ ๋ชฐ๋ผ์ ์๋ฌธ์ฌ์ ๋งํฌ๋ฅผ ๋ค๊ณ ์๋ค) - ํ๋, ํ๋ ฅ, ํจ๊ป co- 1. together; with: 2. abbreviation for company (= business): 3. written… dictionary.cambridg taekwon-seungwon.tistory.com ์ด๋ฒ์ ๋ฐฐ์ธ ์ - build.gradle ์ถ๊ฐ - CoroutineScope - Coroutine Dispatcher - Coroutine ์ํ๊ด๋ฆฌ - WithContext ๋์คํจ์ณ ๋ถ๋ฆฌ - Coroutine ๋น๋ ..

์ด๋ฒ์ ๋ฐฐ์ธ ๊ฒ - SOLID๋ - ์์น๋ณ ์์ - ๊ฒฐ๋ก SOLID๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์ดํด๊ฐ ์ฌ์ด, ์ ์ฐํ, ์ ์ง๋ณด์ ๊ฐ๋ฅํ SW(Soft-Ware: ์ํํธ์จ์ด)๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์๋ ๋์ด์ง ๋์์ธ ์์น์ด๋ค. SOLID ์์น์ ์๊ตฌํ ๊ธฐ๋ฅ์ด ๋ณ๊ฒฝ๋๊ฑฐ๋ ์ฐ๋ฆฌ๊ฐ ํ์ฌ ์กด์ฌํ๋ ํ๋ก๊ทธ๋จ์ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ถ์ ๋, ์์คํ ์ ํฐ ๋ณ๊ฒฝ ์์ด, ์ง์ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์๋๋ก ๋์์ค๋ค. SOLID๋ 5๊ฐ์ง ์์น์ ์ ์ผ ์ฒซ ๊ธ์๋ฅผ ๋ฐ์ ๋ง๋ค์๋ค. - S : Single Resposibility Priciple / ๋จ์ผ ์ฑ ์ ์์น - O : Open Closed Principle / ๊ฐ๋ฐฉ ํ์ ์์น - L : Liskov Substitution Principle / ๋ฆฌ์ค์ฝํ ์นํ ์์น - I : I..

๋์์ธ QA๋ฅผ ํ๋์ค ์์คํ ์ค์ ์์ ๊ธ์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ์ ๋ ์์คํ ์ค์ ๊ฐ์ ๋ฐ๋ผ๊ฐ์ง ์๊ณ ๋ชจ๋ ๊ธฐ๊ธฐ ๋๊ฐ์ด ๋ ธ์ถํด๋ฌ๋ผ. Compose์์ Text์ fontSize๋ฅผ sp๋ก ์ง์ ํ๊ฒ ๋๋ฉด ์์คํ ์ค์ ์ ๋ฐ๋ผ๊ฐ๊ฒ ๋๊ณ dp๋ก ์ค์ ํด์ผ๋ง ์ ๋๊ฐ์ผ๋ก ์ ์ง๋๋ ๊ฒ์ ์์๋ค. ๊ทผ๋ฐ TextStyle๋ก ๋ชจ๋ ๊ณ ์ ์์ผ์ style์ ์ง์ ํด์ฃผ๊ณ ์๋ ๋ dp๋ก ์ค์ ํ๋ ค๊ณ ๋๋ฆฌ๋ฅผ ์น๋ค ๊ฒฐ๊ตญ ์๋์ ๊ฐ์ด ์ค์ ํ๊ฒ ๋๋ค. ์ด๋ฒ์ ๋ฐฐ์ด ๊ฒ! 1. Compose์์๋ fontSize๋ฅผ ์ ํ ๋ sp๋ฅผ ์ ์ธํด์ค์ผํ๋ค. 2. ๊ผญ dp๋ก fontSize๋ฅผ ์ ์ธํด์ค์ผ ํ๋ค๋ฉด, ์๋์ ๊ฐ์ด ์ ์ธ ํด์ฃผ๋ฉด ๋๋ค. (๋ฌด์กฐ๊ฑด Composable ์ด๋ ธํ ์ด์ ์ ์ถ๊ฐํด์ค์ผ๋ง ๊ฐ๋ฅํ ํจ์์ด๋ค) 3. ํ์ง๋ง ๋์์ด๋์ ์ผํ๋ฉด์ textStyle ..

๋ณธ๊ฒฉ์ ์ผ๋ก ๊ฐ๋ฐ ๋ธ๋ก๊ทธ๋ฅผ ์์ํ๋ ค๋๋ฐ ํญ์ ๋ณด๊ธฐ๋ง ํด์ค๋ ๊ฒ์ ๋ง๋ค์ด์ผํ๋ ์ฌ์ ์ด๋. ์ ํ๋ธ๋ฅผ ๋งค์ผ ๋ณด์ง๋ง ๊ทธ๊ฑธ ์ง์ ๋ด๊ฐ ๋ง๋ ๋ค๋ฉด? ์ด๋ผ๋ ๋ง์๊ณผ ๋น์ทํ๊ฒ ์ง์ ์ฅ๋ฒฝ์ด ์๊ฐ๋ณด๋ค ๋๋ค. ์ฌ๋ฌ๊ฐ์ง ์ง์ ์ฅ๋ฒฝ ํน์ ๊ฑฑ์ ์ ๋์ดํด๋ณด์๋ฉด - ์์ฆ ๋ง์ด ์ฐ๋ ๋ฐ๊ณผ ํจ๊ป ์ฌ๋ฐ๊ฒ ๋ง๋ค๊ณ ์ถ๋ค. - ์ด๋ณด์ฒ๋ผ ๋ณด์ด๊ณ ์ถ์ง ์๋ค. - ์ ๋๋ก ๋ ๊ธ์ ์ฐ์ง ์์ผ๋ฉด ์ฌ๋๋ค์ด ์ํ์ง ์์๊น? - ์ ์ด๋ค ์ฃผ์ ๋ก ๊ธ์ ์ฐ์ง? ๋ฑ๋ฑ... ์ง์ด์ด์ธ์ง ๊ณ ๋ฏผ์ ์๋ฐฑ๋ฒ ํ๊ณ ๊ธ์ ์ผ๋ค ์ง์ ๋ค๋ฅผ ๋ฐ๋ณตํ๋ฉฐ ์๊ฐ๊ฐ ๋๋ฉด ์ด๋ฐ ๋๋์ธ๊ฐ? ๋ผ๊ณ ์๊ฐ์ด ๋ค ์ ๋์๋ค. ์์ ๊ฑฑ์ ๋ค์ ํ๋์ฉ ํ์ด๋ณด์๋ฉด, - ์์ฆ ๋ง์ด ์ฐ๋ ๋ฐ๊ณผ ํจ๊ป ์ฌ๋ฐ๊ฒ ๋ง๋ค๊ณ ์ถ๋ค. ์ด๊ฑด ๋ญ ํด๋ณด๋ฉด ๋๋ค. ๊ทผ๋ฐ ์ฌ์ง์ ์ฐพ๊ธฐ๋ ํด์ผํ๊ณ ๊ณ์ํด์ ๋ฐ์ ์๊ณ ์๋ ์ฌ๋์ด๋ผ๋ฉด ์ฌ์ฉํด๋ณด๋ฉด..

Databinding์ ์ฌ์ฉ ํ๊ณ ์์ด! ๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฐ๋์ง ์๊ฒ ์ด. ๊ทผ๋ฐ ์๋ฒ์์ ๋ฐ์์จ ๋ฐ์ดํฐ๋ค์ ์ด๋ป๊ฒ ๊ฐ๊ณตํด์ ๋ฐ๋ก ์จ? ์๊ฐ์ด๋ ํ์ ๋ญ ํ๋ฌผ๋ฉฐ ์ฌ์ฉ์ ์ฑ๋ณ์ด๋ผ๋ ๊ฐ๊ณตํด์ ๋ณด์ฌ์ค์ผํ๋๊ฑฐ ์๋๊ฐ? ๊ทธ๋ผ ๋ ๋ค๋ฅธ ๊ณณ์์ ์ฃผ์ ํด์ค์ผํ๋๊ฑฐ ์๋์ผ? ๋ผ๊ณ ์๊ฐํ์ง๋ง… ์~์ฃผ ์ข์ ๊ธฐ๋ฅ์ด ์๋ค.(์ด๋ฌ๋ฉด ๋ท๋ง์ด ๊ถ๊ธํด์ ๋ฒ์ด๋๊ธฐ ํ๋ค๋ค ๐คฆโ๏ธ) 1. ์ผ๋จ ์ฌ์ฉํ Data class๋ฅผ ๋ง๋ ๋ค. data class Memo( // @SerializedName("id") object ์ค ํด๋น ๊ฐ์ด null ๊ฒฝ์ฐ // -> json ์ผ๋ก ๋ง๋ค ํ๋๋ฅผ ์๋ ์๋ต @SerializedName("id") @Expose val id: Int, โ @SerializedName("title") @Expose val me..

์ด๋ฒ์ RecyclerView ViewPager image ๋ค์ ์ด๋ป๊ฒ ํ๋ฉด Databinding์ ์ฌ์ฉํ ์ ์๋์ง ์ ์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ณดํต RecyclerView๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Adapter ๋ฐ๋ณต๋ Layout RecyclerView๋ฅผ ์ฌ์ฉํ๋ ๊ณณ์์์ ์ ์ธ ๋ค์ด ํ์ํ๋ฐ Databinding์ ์ด์ฉํ๋ฉด ์ฝ๊ฐ์ฉ ๋ฌ๋ผ์ง๊ฒ ๋๋ค. (๊ธฐ๋ณธ์ ์ธ RecyclerView๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ ํ์ ์งํํ๊ฒ ์ต๋๋ค ๐โ๏ธ) 1. ๊ฐ์ฅ ๋จผ์ ๋ฐ๋ณตํ์ฌ ์ฌ์ฉํ Layout์ ๋ง๋ค์ด์ค๋๋ค. โ โ โ โ โ โ โ ์์ ๊ฐ์ด ๋ฐ์ธ๋ฉ์ผ๋ก ๋ฌถ์ด์ฃผ๊ณ ์ฌ์ฉํ item(data class) ๋ชจ๋ธ์ variable๋ก ์ ์ธ ํด์ค๋๋ค. ์ ์ธํ item์ผ๋ก ๊ฐ View์ ๋ฃ์ด์ค๋๋ค. (์นด์นด์ค ์ฃผ์์ฐพ๊ธฐ api๋ฅผ ์ฌ์ฉํจ ๐บ๐ผ) 2. A..
Databinding์ด๋!(๋ฐ์ดํฐ ๋ฌถ๊ธฐ?) → ์๋๋ก์ด๋์์์ data binding ์ด๋, Android Archictecture Components ์ ํ ๋ถ๋ถ์ผ๋ก์ Ui ์์์ ๋ฐ์ดํฐ๋ฅผ ํ๋ก๊ทธ๋จ์ ๋ฐฉ์์ผ๋ก ์ฐ๊ฒฐํ์ง ์๊ณ , ์ ์ธ์ ํ์์ผ๋ก ๊ฒฐํฉํ ์ ์๊ฒ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋งํ๋ค. ์ฝ๊ฒ ์ค๋ช ํ๋ฉด MVVMํจํด์ ์ฌ์ฉํ๋ฉด์ Activity๋ Fragment์์ ๋ทฐ ๊ด๋ จ๋ ์ฝ๋๋ค์ ์ฌ์ฉํ์ง ์๊ณ xml ์ฝ๋์ ์ง์ด ๋ฃ๋ ๊ฒ์ ๋งํฉ๋๋ค. ์ด๊ฒ๋ค์ ViewModel์์ ๊ด๋ฆฌํ๊ฒ ๋ฉ๋๋ค. ๋ ๋ ๋ ํผ๋ถ์ ์๋ฟ๊ฒ ๋งํ์๋ฉด Activity๋ Fragment์์ ๋ง์ ์ฝ๋๋ค์ ์ ์ง ์๊ฒ ํจ์ผ๋ก์จ ๋ทฐ๋ฅผ ๊ด๋ฆฌํ๊ณ ๋ณํ์ํค๋ ์ฝ๋๋ ViewModel์์ ๊ด๋ฆฌํด์ Activity & Fragment ๋ค์ ์ฝ๋๋ ๋์ฑ ..
์ด๋ฒ์ ์ค์ ๋ก ํ๋ก๊ทธ๋จ์ ์์กด์ฑ ์ฃผ์ (DI)๋ฅผ ์ ์ฉ์์ผ๋ณด๋ฉด์ ์ฝ์ง์ ์ฐ์์์ ๋๊ผ๋ ์ ๊ณผ ํ์ํ ๋ถ๋ถ์ ์์ฑํ ์์ ์ ๋๋ค. 1. Fragment๋ผ๋ฆฌ ViewModel์ ๊ณต์ ํ๊ณ ์ถ์ ๋! class JoinEntrepreneurFragment: Fragment() { ... private val viewModel: JoinViewModel by sharedViewModel() โ ... } โ class JoinMainFragment : SoftKeyboardImplementFragment() { ... private val viewModel: JoinViewModel by sharedViewModel() โ ... } ์์ ๊ฐ์ ํ์์ผ๋ก sharedViewModel() ๋ฅผ ์ ์ด์ค๋ค๋ฉด Fragment๊ฐ ..