๐ 24๋ 5์ 6์ผ ~ 5์ 12์ผ |
|||||
์์์ผ |
ํ์์ผ |
์์์ผ | ๋ชฉ์์ผ | ๊ธ์์ผ ๋ฐ ์ฃผ๋ง | |
์ฌํ ๊ฐ์ ์๊ฐ | โ Shared Preference โ Room โ ์ฌ์ฉ์์์น โ ๊ตฌ๊ธ์ง๋์ฑ โ Retrofit โ ๊ฐ๋ฐํ๋ก์ธ์ค โ ๋๋ฒ๊น |
โก ๋ฏธ์ธ๋จผ์ง์ฑ | โก ๋ฏธ์ธ๋จผ์ง์ฑ | ||
๊ฐ์ธ ๊ณผ์ | โ ๊ฐ์ธ ๊ณผ์ ์์ | โ ๊ฐ์ธ ๊ณผ์ ๊ตฌํ | โ ๊ฐ์ธ ๊ณผ์ ์ ์ถ โก ๊ฐ์ธ ๊ณผ์ ์๋ฃ |
||
Fragment ์ดํด - ๋ฐ์ดํฐ ์ ๋ฌ - ํ๋ฉด ์ด๋ |
โก ํ๋ฉด ์ด๋ | โก ๋ฐ์ดํฐ ์ ๋ฌ | |||
์๊ณ ๋ฆฌ์ฆ | โ ์๊ณ ๋ฆฌ์ฆ | ||||
์๋ จ ์ฃผ์ฐจ ํํ๋ก์ ํธ ์ฝ๋ ๋ถ์ | โก ์ฝ๋ ๋ถ์ | ||||
์คํ ๋ค๋๋ฐ | ํ์ฃผ → ๋ฒ ์ด์ง ์ด๋ |
||||
๋ฒ ์ด์ง๋ฐ ๊ฐ์ ๋ค์ด๋ณด๊ธฐ |
|||||
Joyce ์์ ๋ ํ | โ 151 ~ 217p (๋ทฐ, ๋ ์ด์์) |
โ ์คํฑ์์น | โ ๋ฎค์ง ํ๋ ์ด์ด | โ QR ๋ฆฌ๋๊ธฐ | |
๊ธฐํ ์ฌํญ | โก ์ ์ฐฝ๊ฒฝ ์ ๋ฆฌ | ||||
์ฌํ ๋ชฉํ | |||||
- KIA ๊ฐ๋
ํ๊ธฐ - Android Developer ์ฝ๊ธฐ - ๊ฐ์ธํ๋ก์ ํธ UI ๊ตฌํ - ์ ๋ฒ ํ๋ก์ ํธ ์ฝ๋ ๋ฏ์ด๋ณด๊ธฐ - ๋งํฌ ์๊ฐ - ์บ ํ ๊ณต์ ๊ต์ก์ด ๋๋๊ณ ๋๋ฉด, ์ฑ๋ฆฐ์ง/์คํ ๋ค๋ ์ฐจ๋ก๋ก ์๊ฐํ๊ธฐ |
1. ์๋๋ก์ด๋ ์ฌํ ๊ฐ์ ์๊ฐ ์๋ฃ ๋ฐ ์ ๋ฆฌ
- ๊ฐ์ ์๊ฐ์ ๋ค ํ์ผ๋, ๋ธ๋ก๊ทธ์ ๋ด์ฉ ์ ๋ฆฌ๋ ๋ ํ๋ค. ๊ณผ์ ๋ฅผ ๋ค ์ํํ ๋ค์ ์ถ๊ฐ ๋ด์ฉ์ ์ ๋ฆฌํ ์๊ฐ์ด๋ค.
2. Joyce ์๋๋ก์ด๋ ์์ ๋ ํ ๋ฐ ํ๋ก์ ํธ ์ค์ต
1~4. ์ด์ ์ ๊ณต๋ถํ๋ ๋ด์ฉ : ์ด์ TIL์ ์ ๋ฆฌ
5. ํ๋ฉด ๊ตฌ์ฑํ๊ธฐ : ๋ทฐ(์์ ฏ)
- ๋ค ์๋ ๋ด์ฉ์ด๋ผ ๋ค์ ํ๋ ์ฐจ์์์ ์ฝ์๋ค.
- DPI(Dot per Inch) = 1์ธ์น ๋น ๋ค์ด๊ฐ๋ ํฝ์ ๊ฐ์. DPI๊ฐ ๋์ ์๋ก ํด์๋๊ฐ ๋์
- ํจ๋ฉ(Padding) : ๋ด์ฉ(์ฝํ
์ธ )๊ณผ ์ธ๊ณฝ ์ฌ์ด์ ์ฌ๋ฐฑ
๋ง์ง(margin) : ๋ทฐ์ ๋ทฐ ์ฌ์ด์ ์ฌ๋ฐฑ - scaleType : fitCenter, fitXY, center, centerCrop
- edittext์ ์ธํํ์ ์ textPassword๋ก ํ๊ธฐํ๋ฉด ๊ฐ๋ฆผ ํ๊ธฐ
6. ํ๋ฉด ๊ตฌ์ฑํ๊ธฐ : ๋ทฐ(๋ทฐ ๊ทธ๋ฃน)
- ์ญ์ ๋ค ์๋ ๋ด์ฉ์ด์๋ค.
- Linear layout: orientation ์ค์ , ๋ ๋ฆฝ์ ์ผ๋ก ์์น ์ง์ (layout_gravity), ๋น์ค ์ง์ (layout_weight, weightsum)
- Relative layout: ๋ถ๋ชจ ๋ ์ด์์ ํน์ ๋ค๋ฅธ ๋ทฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ ์์น ์ง์
- Constraint layout: 0dp๋ก ์ค์ ํ๋ ๊ฒ = match_constraint (์ ์ฝ์ ๋ทฐ ํฌ๊ธฐ๋ฅผ ๋ง์ถ๋ ๊ฒ)
๋ฐ์ํ UI๋ฅผ ๋ง๋ค๊ธฐ ์ํด Guideline์ ์ ์ฉํ๊ฒ ์ฌ์ฉ
7. ์คํฑ์์น ํ๋ก์ ํธ
'Thread'๋ฅผ ๋ณต์ตํ๊ธฐ ์ํ ๊ฐ๋จํ ์คํฑ์์น ํ๋ก์ ํธ๋ฅผ ์ ์ํ๋ค.
8. ๋ฎค์ง ํ๋ ์ด์ด ํ๋ก์ ํธ
๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฑ์ด ๋์ํ๊ธฐ ์ํ 'Service'๋ฅผ ์ดํดํ๊ธฐ ์ํด ๊ฐ๋จํ ๋ฎค์ง ํ๋ ์ด์ด๋ฅผ ์ ์ํ๋ค.
๋ํ ์ค๋์ค ์ฌ์์ ์ํด MediaPlayer API๋ฅผ ์ด์ฉํ๋ค.
9. QR ์ฝ๋ ๋ฆฌ๋๊ธฐ ํ๋ก์ ํธ
์๋๋ก์ด๋ JetPack ์ค CameraX ๋ผ์ด๋ธ๋ฌ๋ฆฌ์, ๊ตฌ๊ธ ML ํคํธ๋ฅผ ์ฌ์ฉํด๋ณด๊ธฐ ์ํด QR์ฝ๋ ๋ฆฌ๋๊ธฐ๋ฅผ ๋ง๋ค์ด ๋ณด์๋ค.
์ด์ Room๊ณผ ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ๋ฅผ ์ด์ฉํ Todolist ํ๋ก์ ํธ,
Retrofit, JSON, Google Map API, Firebase๋ฅผ ์ด์ฉํ ๋ฏธ์ธ๋จผ์ง ํ๋ก์ ํธ๊น์ง ํ๋ฉด ์์ ๋
ํ์ด ๋๋๋ค.
3. ํ๋ก๊ทธ๋๋จธ์ค ์๊ณ ๋ฆฌ์ฆ (์์ ์ํธ)
- ์์ ์ํธ์์ ์ค์ํ ๊ฒ์ ๋ด๊ฐ ์ฒ์ ๊ตฌ์ํ๋ ๊ฒ์ฒ๋ผ ๋จ์ํ ์์คํค ์ฝ๋๊ฐ์์ n๊ฐ(๊ฑฐ๋ฆฌ)๋ฅผ ๋ํ์ง ์๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ฒ ๊ตฌ์ฑํ๋ฉด ์ํ๋ฒณ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋์ ์ด์ํ ๊ฐ์ด ์ถ๋ ฅ๋ ๊ฒฝ์ฐ์ ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ฐ๋ผ์ 26('Z' - 'A' + 1 ๊ฐ)์ ์ด์ฉํด์ ์ํ๋ฒณ์ ๋ฒ์ด๋ ์ ์๋๋ก ๋ง๋๋ ๊ฒ์ด ์ค์ํ๋ค.
4. ์นด์นด์ค ์ด๋ฏธ์ง ๊ฒ์ API ์ด์ฉ ๊ณผ์ ๊ตฌํ
(1) Bottom navigation ์ถ๊ฐ
https://velog.io/@dabin/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9CButton-Navigation
<android.support.design.widget.BottomNavigationView // ์๋ํ์ง ์์
<com.google.android.material.bottomnavigation.BottomNavigationView // ์ผ๋ก ๊ต์ฒด
- ์ฐธ๊ณ ๋ก ๊ฐ์ด๋์์ xmlํ์ผ์ ๋ผ๊ณ ์์ฑํ๋ผ๋๋ฐ, ์ค์ ๋ก ๋นจ๊ฐ์์ด ๋ ์ ์์ ๊ฐ์ด ์์ ํด์ค์ผ ์๋ํ๋ค.
package com.limheejin.kakaoimagesearch
..
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
replaceFragment(ImageSearchFragment())
setupBottomNavigation()
}
private fun setupBottomNavigation() {
binding.bottomNavigation.setOnItemSelectedListener { item ->
when (item.itemId) {
R.id.action_search -> {
replaceFragment(ImageSearchFragment())
return@setOnItemSelectedListener true
}
R.id.action_storage -> {
replaceFragment(MyStorageFragment())
return@setOnItemSelectedListener true
}
else -> return@setOnItemSelectedListener false
}
}
}
private fun replaceFragment(fragment: Fragment) {
val fragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.replace(binding.fragmentContainerView.id, fragment)
fragmentTransaction.commit()
}
}
- ๋ทฐํ์ด์ ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ์ผ๋จ ๋ค๋น๊ฒ์ด์ ์ ํด๋ฆญํ์ ๋ Fragment์ ์ด๋์ ๊ตฌํํ๋ค.
(2) ๋ทฐํ์ด์ 2
https://todaycode.tistory.com/26
(3) ์นด์นด์ค ์ด๋ฏธ์ง ๊ฒ์ API + Retrofit
https://hanyeop.tistory.com/225
(4) Edittext ๊ฒ์์ฐฝ
์์ง ๊ตฌํ์ค์ด๋ผ, ๋ค์์ฃผ ์ค์ ํด๋น ๋ด์ฉ์ ์์ ํ๊ฒ ๋ค.
5. ๊ธฐํ ๋ด์ฉ ์ ๋ฆฌ
์ต์ข ํ๋ก์ ํธ์ ๋ํ ๊ธฐ์ ์คํ์ ์๊ฐํ๋ฉด์, ํ์๋ถ๊ณผ ๋ํํ ๋ช๋ช ๋ด์ฉ๋ค์ ๋ํด ์ ๋ฆฌํด๋ณด์๋ค.
1. Firebase Realtime Database VS Firestore
- ์ผ๋ฐ์ ์ผ๋ก ์ต๊ทผ์ firestore๊ฐ realtime database๋ฅผ ๋๋ถ๋ถ ๋์ฒดํ์๊ณ , ํนํ ์ผ์ผ์ ๋ฐ์ดํธ๊ฐ ์ ๊ณ read ์์ฃผ๋ก ๋์ํ๋ค๋ฉด ๋๋์ฑ firestore๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
2. Clean Architecture
- ํ์๋ถ์ด ์ํคํ ์ฒ ์ค ํ์ ์์ ์ ๋ง ๋ง์ด ์ฐ์ธ๋ค๋ ํด๋ฆฐ ์ํคํ ์ฒ์ ๋ํด ์์ธํ ์ค๋ช ํด์ฃผ์ จ๋ค.
- ํด๋ฆฐ์ํคํ
์ฒ์ ํต์ฌ์ ์์กด์ฑ ๋ฐฉํฅ์ ์๋ค. ์์ชฝ์ ์์ ๋ฐ๊นฅ์ชฝ์ ์ ๋ณด๋ฅผ ์๊ฑฐ๋ ์ ๊ทผํ๋ฉด ์ ๋๋ค.
๋ฐ๊นฅ์ ์๋ ์์ผ์๋ก ์ฝ๊ฒ ๋ณํ๋ ๊ฒ๋ค์ด๋ค.
๊ตฌ์กฐ๋ ํฌ๊ฒ ๋๋ฉ์ธ ๋ ์ด์ด(์ํฐํฐ, ์ ์ฆ์ผ์ด์ค), ์ด๋ํฐ ๋ ์ด์ด, ์ธํ๋ผ์คํธ๋ญ์ฒ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋๋ค. - MVVM์ ์ด์ ๋ง ๋ฐฐ์ฐ๊ณ ์๋ ๋จ๊ณ์ง๋ง, ํด๋ฆฐ ์ํคํ ์ฒ์ ์ฌ์ฉ ์ด์ ์ ๋ํด์ ์ดํด๊ฐ ์ ๋๋ค.
3. Gson VS Moshi
- ์ฌํ ๊ฐ์์์๋ Json ๋ฐ์ดํฐ์ ์๋ฐ ๊ฐ์ฒด ๊ฐ์ ์ง๋ ฌํ/์ญ์ง๋ ฌํ๋ฅผ ์ํด Gson์ ์ฌ์ฉํ์๋ค.
- ๊ทธ๋ฐ๋ฐ ์ด Gson๋ ์ฌ์ค์ ์๋ ๊ธฐ์ ์ด๊ณ , ์ต๊ทผ์ Moshi๋ก ์ ํํ๋ ์ถ์ธ๋ผ๊ณ ํ๋ค.
์๋ง Moshi๋ฅผ ๋ฐ๋ก ๋ฐฐ์์ ์ฌ์ฉํด์ผ ํ ๊ฒ ๊ฐ๋ค.
๐ญ Retrospect
์ ๋ฒ์ฃผ/์ด๋ฒ์ฃผ๋ ํด์ธ ์ฌํ๋ ๋ค๋ ์ค๊ณ , ํด์ผ๋ ๋ง๊ณ , ๊ทธ ์์ค์ ๋ชธ๊น์ง ๋ง์ฝ์ด๋ผ ๋ณ๊ฐ๊น์ง ๋ด์ ์บ ํ ์์ ์ด๋๋ก ์ถ๊ฒฐ๋ ์ ์ผ ์๋ง์ด๋ฉฐ ์๊ฐ๋ ๋งค์ฐ ๋ถ์กฑํ๋ ์ฃผ๋ค. ๊ทธ ๋ถ์กฑํ ์๊ฐ์ ๋งํํ๊ธฐ ์ํด ๊ธ์์ผ๋ถํฐ ์ฃผ๋ง์ ๋ค ๊ณต๋ถ์ ํฌ์ํ๊ณ ์๋ค.
์ฌ์ ๋กญ๊ฒ ๊ฐ์ธ ๊ณต๋ถ ์๊ฐ์ด ์ฃผ์ด์ง๋ค๋ฉด ๊ธ๋ฐฉ ๋ฐ๋ผ์ก์ ์ ์์ ๊ฒ ๊ฐ๊ธดํ๋ฐ, ๋ถํธ์บ ํ๋ผ๋ ๊ฒ ์์ฒด๊ฐ ์ง๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๊ณ ํํ๋ก์ ํธ ์ฃผ๊ฐ์ด ๊ณ์ ๋์์์ (์ ์ฃผ๊น์ง๋ ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ, ๋ทฐ๋ฐ์ธ๋ฉ, ๋ค์ด์ผ๋ก๊ทธ์ ๊ฐ์ ๊ฒ๋ค์ ๋ฐฐ์ฐ๋ค๊ฐ ๊ทธ ๋ค์์ฃผ๋ถํฐ๋ Retrofit, MVVM, ๋ฐ์ดํฐ๋ฒ ์ด์ค(Room ๋ฑ), API ๋ฑ์ ์ด์ฉ) 1์ฃผ์ผ์ ๋์น๋ฉด ๋ค๋ฅธ ์๊ฐ์ ์์ค๊น์ง ๋ฐ๋ผ๊ฐ๊ธฐ๊ฐ ์๋นํ ๋ฒ ์ฐจ๋ค. ๋ฐ๋ผ์ ๋ฏธ๋์ ์ด ๊ธ์ ๋ณผ ์บ ํ์๊ฐ์๊ฐ ์๋ค๋ฉด ์ต๋ํ ํ๋ฃจ 12์๊ฐ์ ์จ์ ํ ์ฝ๋ฉ ๊ณต๋ถ์ ํฌ์ํ๊ณ ์ถ๊ฒฐ ๊ด๋ฆฌ ์ํด์ ๋์ฒ๋ผ ๊ณ ์ํ์ง ์๊ธธ ๋ฐ๋๋ค.
๋ฒ ์ด์ง๋ฐ์ผ๋ก ๋ด๋ ค๊ฐ ๊ฒ์ ์ต์ข ํ๋ก์ ํธ๊ฐ ์งํ๋๊ธฐ ์ ๋จ์ 2์ฃผ๋์์ ์ ๋ง ๊ทธ๋์ ๋ชป ๋ฐ๋ผ๊ฐ๋ ๋ด์ฉ์ ์์ธํ ํํค์น๊ณ ์๋ฒฝํ๊ฒ ๋ง์คํฐํ๊ณ ์ถ์ด์๋ค. ๋น๋ถ๊ฐ UI๋ ๋ค๋ฅธ ๋ชฉํ์ ๋ํ ์ ๊ฒฝ์ ์ข ๋๊ณ , ์ ๋ง ์ฝ๋ ๊ตฌํ์๋ง 2์ฃผ๋ฅผ ์์๋ถ์ ๊ฒ์ด๋ค. ์ต์ข ํ๋ก์ ํธ๋ ์ ๋ง ์๋ฒฝํ๊ฒ ์งํํด๋ณด๊ณ ์ถ๋ค. ๋น์ฐํ ์๋ฆฌ์ง๋ง, ์กฐ๊ธ์ด๋ผ๋ ์ด๋ ต๊ฒ ๋๊ปด์ง๋ค๋ฉด ๋จ๋ค๋ณด๋ค ๋ฐฐ๋ ์ด์ฌํ ํด์ผํ๋ค.
โ