[WIL] 2024๋…„ 5์›” ๋‘˜์งธ์ฃผ (์‹ฌํ™” ๊ฐ•์˜ ์ˆ˜๊ฐ•, ๊ฐœ์ธ ๊ณผ์ œ ๊ตฌํ˜„์ค‘, ์Šคํ†ฑ์›Œ์น˜, ๋ฎค์งํ”Œ๋ ˆ์ด์–ด, QR๋ฆฌ๋”๊ธฐ)
๋ฐ˜์‘ํ˜•

 

 

 

 

๐Ÿ“… 24๋…„ 5์›” 6์ผ ~ 5์›” 12์ผ

  ์›”์š”์ผ
ํ™”์š”์ผ
์ˆ˜์š”์ผ ๋ชฉ์š”์ผ ๊ธˆ์š”์ผ ๋ฐ ์ฃผ๋ง
์‹ฌํ™” ๊ฐ•์˜ ์ˆ˜๊ฐ• โ–  Shared
  Preference
โ–  Room
โ–  ์‚ฌ์šฉ์ž์œ„์น˜
โ–  ๊ตฌ๊ธ€์ง€๋„์•ฑ
โ–  Retrofit
โ–  ๊ฐœ๋ฐœํ”„๋กœ์„ธ์Šค
โ–  ๋””๋ฒ„๊น…


  โ–ก ๋ฏธ์„ธ๋จผ์ง€์•ฑ โ–ก ๋ฏธ์„ธ๋จผ์ง€์•ฑ
๊ฐœ์ธ ๊ณผ์ œ     โ–  ๊ฐœ์ธ ๊ณผ์ œ ์‹œ์ž‘ โ–  ๊ฐœ์ธ ๊ณผ์ œ ๊ตฌํ˜„ โ–  ๊ฐœ์ธ ๊ณผ์ œ ์ œ์ถœ
โ–ก ๊ฐœ์ธ ๊ณผ์ œ ์™„๋ฃŒ
Fragment ์ดํ•ด
- ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
- ํ™”๋ฉด ์ด๋™
      โ–ก ํ™”๋ฉด ์ด๋™ โ–ก ๋ฐ์ดํ„ฐ ์ „๋‹ฌ
์•Œ๊ณ ๋ฆฌ์ฆ˜       โ–  ์•Œ๊ณ ๋ฆฌ์ฆ˜  
์ˆ™๋ จ ์ฃผ์ฐจ ํŒ€ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ๋ถ„์„         โ–ก ์ฝ”๋“œ ๋ถ„์„
์Šคํƒ ๋‹ค๋“œ๋ฐ˜     โ–ก 7์ฃผ์ฐจ ๊ฐ•์˜ ๋ณต์Šต
โ–ก MVVM๊ณผ์ œ ๋ณต์Šต
โ–ก 8์ฃผ์ฐจ ๊ฐ•์˜ ํƒˆ์ฃผ
→ ๋ฒ ์ด์ง ์ด๋™
๋ฒ ์ด์ง๋ฐ˜ ๊ฐ•์˜
๋“ค์–ด๋ณด๊ธฐ
         
Joyce ์„œ์  ๋…ํ•™   โ–  151 ~ 217p
   (๋ทฐ, ๋ ˆ์ด์•„์›ƒ)
โ–  ์Šคํ†ฑ์›Œ์น˜ โ–   ๋ฎค์ง ํ”Œ๋ ˆ์ด์–ด โ–   QR ๋ฆฌ๋”๊ธฐ
๊ธฐํƒ€ ์‚ฌํ•ญ         โ–ก ์ •์ฐฝ๊ฒฝ ์ •๋ฆฌ
์‹ฌํ™” ๋ชฉํ‘œ
 - KIA ๊ฐœ๋… ํ›‘๊ธฐ
 - Android Developer ์ฝ๊ธฐ
 - ๊ฐœ์ธํ”„๋กœ์ ํŠธ UI ๊ตฌํ˜„
 - ์ €๋ฒˆ ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ๋œฏ์–ด๋ณด๊ธฐ
 - ๋งํฌ ์ˆ˜๊ฐ•
 - ์บ ํ”„ ๊ณต์‹ ๊ต์œก์ด ๋๋‚˜๊ณ  ๋‚˜๋ฉด, ์ฑŒ๋ฆฐ์ง€/์Šคํƒ ๋‹ค๋“œ ์ฐจ๋ก€๋กœ ์ˆ˜๊ฐ•ํ•˜๊ธฐ

 

 

 

 


 

 

1. ์•ˆ๋“œ๋กœ์ด๋“œ ์‹ฌํ™” ๊ฐ•์˜ ์ˆ˜๊ฐ• ์™„๋ฃŒ ๋ฐ ์ •๋ฆฌ

 

[Android ๊ธฐ์ดˆ] 15. SharedPreferences

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ์˜ ์˜๊ตฌ(๋น„ํœ˜๋ฐœ์„ฑ) ๋ฐ์ดํ„ฐ ์ €์žฅ๋ฒ•SharedPreference (์„ค์ • ์ •๋ณด ์ €์žฅํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ)๋ฐ์ดํ„ฐ๋ฒ ์ด์ŠคํŒŒ์ผ<p data-ke-size="si..

limheejin.tistory.com

 

[Android ๊ธฐ์ดˆ] 16. Room (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ์˜ ์˜๊ตฌ(๋น„ํœ˜๋ฐœ์„ฑ) ๋ฐ์ดํ„ฐ ์ €์žฅ๋ฒ•SharedPreference๋ฐ์ดํ„ฐ๋ฒ ์ด์ŠคํŒŒ์ผ   1) Room ๊ฐœ์š”SQLite๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด ๋งคํ•‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์‰ฝ๊ฒŒ Query๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” API๋ฅผ

limheejin.tistory.com

 

[Android ๊ธฐ์ดˆ] 17. ์‚ฌ์šฉ์ž ์œ„์น˜ ์–ป๊ธฐ

์œ„์น˜ ์ธ์‹ ์•ฑ ๋นŒ๋“œ  |  Sensors and location  |  Android Developers์œ„์น˜ ์ธ์‹ ์•ฑ ๋นŒ๋“œ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” ์œ„์น˜ ์ธ์‹ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๋ชจ๋ฐ”์ผ ์‚ฌ์šฉ์ž๋Š” ์–ด๋””์—๋‚˜ ๊ธฐ๊ธฐ๋ฅผ ํœด๋Œ€ํ•˜๊ธฐ

limheejin.tistory.com

  • ๊ฐ•์˜ ์ˆ˜๊ฐ•์€ ๋‹ค ํ–ˆ์œผ๋‚˜, ๋ธ”๋กœ๊ทธ์— ๋‚ด์šฉ ์ •๋ฆฌ๋Š” ๋œ ํ–ˆ๋‹ค. ๊ณผ์ œ๋ฅผ ๋‹ค ์ˆ˜ํ–‰ํ•œ ๋’ค์— ์ถ”๊ฐ€ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•  ์ƒ๊ฐ์ด๋‹ค.

 

 

 


 

 

2. Joyce ์•ˆ๋“œ๋กœ์ด๋“œ ์„œ์  ๋…ํ•™ ๋ฐ ํ”„๋กœ์ ํŠธ ์‹ค์Šต

 

1~4. ์ด์ „์— ๊ณต๋ถ€ํ–ˆ๋˜ ๋‚ด์šฉ : ์ด์ „ TIL์— ์ •๋ฆฌ

 

[Android TIL] 240415 (Joyce ์„œ์  ๊ณต๋ถ€, ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ 4์ฃผ์ฐจ ๊ณผ์ œ UI ๊ตฌํ˜„, ๋ฒ ์ด์ง ๋ฐ ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ 3·4์ฃผ์ฐจ

๐ŸŒฑ Today I Learned (์ง‘์ค‘์‹œ๊ฐ„ : 9์‹œ๊ฐ„ 5๋ถ„) (09:25 ~ 11:00 / 1์‹œ๊ฐ„ 30๋ถ„) ๋ฐ์ผ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด ๋ฐ ํŒ€ ์Šคํฌ๋Ÿผ (11:00 ~ 12:10 / 1์‹œ๊ฐ„ 10๋ถ„) ๋ฒ ์ด์ง๋ฐ˜ ๊ฐ•์˜ 3์ฃผ์ฐจ, 4์ฃผ์ฐจ ์ˆ˜๊ฐ• (12:10 ~ 13:00 / 50๋ถ„) ์Šคํƒ ๋‹ค๋“œ๋ฐ˜ ๊ฐ•์˜ 3

limheejin.tistory.com

 

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'๋ฅผ ๋ณต์Šตํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ์Šคํ†ฑ์›Œ์น˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ์ž‘ํ–ˆ๋‹ค. 

 

[Android] ๊ฐ„๋‹จํ•œ ์Šคํ†ฑ์›Œ์น˜ ์•ฑ ๋งŒ๋“ค๊ธฐ : ์“ฐ๋ ˆ๋“œ

์“ฐ๋ ˆ๋“œ๋ฅผ ๋ณต์Šตํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ์Šคํ†ฑ์›Œ์น˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ์ž‘ํ–ˆ๋‹ค. (Joyce ์„œ์  ์˜ˆ์‹œ)๋ฉ”์ธ ์Šค๋ ˆ๋“œ- ์•ฑ์ด ์ฒ˜์Œ ์‹œ์ž‘๋  ๋•Œ ์ƒ์„ฑ๋˜๋Š” ์Šค๋ ˆ๋“œ- ์•กํ‹ฐ๋น„ํ‹ฐ์˜ ๋ชจ๋“  ์ƒ๋ช… ์ฃผ๊ธฐ ๊ด€๋ จ ์ฝœ๋ฐฑ ์‹คํ–‰์„ ๋‹ด๋‹น- ๋ฒ„ํŠผ,

limheejin.tistory.com

 

8. ๋ฎค์ง ํ”Œ๋ ˆ์ด์–ด ํ”„๋กœ์ ํŠธ

๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์•ฑ์ด ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•œ 'Service'๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ„๋‹จํ•œ ๋ฎค์ง ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์ œ์ž‘ํ–ˆ๋‹ค.
๋˜ํ•œ ์˜ค๋””์˜ค ์žฌ์ƒ์„ ์œ„ํ•ด MediaPlayer API๋ฅผ ์ด์šฉํ•œ๋‹ค.

 

[Android] ๊ฐ„๋‹จํ•œ ๋ฎค์ง ํ”Œ๋ ˆ์ด์–ด ์•ฑ ๋งŒ๋“ค๊ธฐ : Service, MediaPlayer API

์ด๋ฒˆ์—” Service๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ๋ฎค์ง ํ”Œ๋ ˆ์ด์–ด ์•ฑ์„ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค. ์—ญ์‹œ Joyce๋‹˜์˜ ์„œ์ ์„ ์ฐธ๊ณ ํ•˜์˜€๋‹ค.  ๐Ÿ’ก ์Œ์•… ์žฌ์ƒ ๋ฐฉ๋ฒ•(1) Raw ๋ฆฌ์†Œ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์žฌ์ƒ (res/raw ํด๋”์— ์Œ์•… ํŒŒ์ผ์„ ์ง์ ‘ ์‚ฝ์ž…)va

limheejin.tistory.com

 

9. QR ์ฝ”๋“œ ๋ฆฌ๋”๊ธฐ ํ”„๋กœ์ ํŠธ

์•ˆ๋“œ๋กœ์ด๋“œ JetPack ์ค‘ CameraX ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€, ๊ตฌ๊ธ€ ML ํ‚คํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์œ„ํ•ด QR์ฝ”๋“œ ๋ฆฌ๋”๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค. 

 

[Android] ๊ฐ„๋‹จํ•œ QR ์ฝ”๋“œ ๋ฆฌ๋”๊ธฐ ๋งŒ๋“ค๊ธฐ : JetPack, CameraX, Google ML kit

์•ˆ๋“œ๋กœ์ด๋“œ JetPack ์ค‘ CameraX ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€, ๊ตฌ๊ธ€ ML ํ‚คํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์œ„ํ•ด QR์ฝ”๋“œ ๋ฆฌ๋”๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์•˜๋‹ค. ์—ญ์‹œ Joyce๋‹˜์˜ ์„œ์ ์„ ์ฐธ๊ณ ํ•˜์˜€๋‹ค.  ๐Ÿ’ก Android Jetpack Android Jetpack ๊ฐœ๋ฐœ์ž ๋ฆฌ์†Œ์Šค - A

limheejin.tistory.com

 

์ด์ œ Room๊ณผ ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ๋ฅผ ์ด์šฉํ•œ Todolist ํ”„๋กœ์ ํŠธ,
Retrofit, JSON, Google Map API, Firebase๋ฅผ ์ด์šฉํ•œ ๋ฏธ์„ธ๋จผ์ง€ ํ”„๋กœ์ ํŠธ๊นŒ์ง€ ํ•˜๋ฉด ์„œ์  ๋…ํ•™์ด ๋๋‚œ๋‹ค.

 

 

 


 

 

3. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ (์‹œ์ €์•”ํ˜ธ)

 

[Kotlin] ์‹œ์ € ์•”ํ˜ธ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜)

๋ฌธ์ œhttps://school.programmers.co.kr/learn/courses/30/lessons/12926     ์ ‘๊ทผ ์•„์Šคํ‚ค ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ํ’€๋ฉด ๋˜์ง€ ์•Š์„๊นŒ? ์ƒ๊ฐํ•˜๋ฉฐ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์ƒํ–ˆ๋‹ค.๋Œ€์ถฉ ๊ตฌ์ƒํ•œ ์ฝ”๋“œ class Solution { fun solution(s: String, n:

limheejin.tistory.com

  • ์‹œ์ € ์•”ํ˜ธ์—์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋‚ด๊ฐ€ ์ฒ˜์Œ ๊ตฌ์ƒํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋‹จ์ˆœํžˆ ์•„์Šคํ‚ค ์ฝ”๋“œ๊ฐ’์—์„œ 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

 

[์•ˆ๋“œ๋กœ์ด๋“œ]Bottom Navigation

BottomNavigation ๋„ํ๋จผํŠธ(https://developer.android.com/reference/android/support/design/widget/BottomNavigationView- ์•ˆ๋“œ๋กœ์ด๋“œ ์ปดํŒŒ์ผ ๋ฒ„์ „ 26.1.0 ๋ถ€ํ„ฐ ์ถ”๊ฐ€๋˜์—ˆ๊ณ , c

velog.io

<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

 

์ฝ”ํ‹€๋ฆฐ viewPager2 : ์‚ฌ์šฉ๋ฒ•, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋“ฑ

1. viewPager2 1-1. viewPager๋ž€? 1-2. viewPager์˜ ํ™œ์šฉ 2. ์‚ฌ์šฉ ๋ฐฉ๋ฒ• 2-1. ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ• 2-2. ์• ๋‹ˆ๋ฉ”์ด์…˜ ์„ค์ • 2-3. ์—ฌ๋ฐฑ ์„ค์ • 1. viewPager2 1-1. viewPager๋ž€? ํŽ˜์ด์ง€๋ฅผ ๋„˜๊ธฐ๋“ฏ์ด ์ด๋ ‡๊ฒŒ ์Š‰-์Š‰- ๋„˜๊ธฐ๋Š” ๊ฒƒ์„ viewPager(๋ทฐ ํŽ˜

todaycode.tistory.com

 

 

(3) ์นด์นด์˜ค ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ API + Retrofit

https://hanyeop.tistory.com/225

 

[Android] ์นด์นด์˜ค ์ด๋ฏธ์ง€ ๊ฒ€์ƒ‰ API ์‚ฌ์šฉํ•˜๊ธฐ (+Retrofit)

https://developers.kakao.com/ Kakao Developers ์นด์นด์˜ค API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•ด๋ณด์„ธ์š”. ์นด์นด์˜ค ๋กœ๊ทธ์ธ, ๋ฉ”์‹œ์ง€ ๋ณด๋‚ด๊ธฐ, ์นœ๊ตฌ API, ์ธ๊ณต์ง€๋Šฅ API ๋“ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. developers.kakao.com ์นด์นด์˜ค

hanyeop.tistory.com

 

 

(4) Edittext ๊ฒ€์ƒ‰์ฐฝ

https://sovovy.tistory.com/35

 

[Android] EditText ๊ฒ€์ƒ‰์ฐฝ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ (+ Enter Key Event ์ œ์–ด)

์•ˆ๋“œ๋กœ์ด๋“œ์˜ EditText๋ฅผ ๊ฒ€์ƒ‰์ฐฝ์ฒ˜๋Ÿผ 1. ์ž…๋ ฅ์ด ํ•œ์ค„๋งŒ ๊ฐ€๋Šฅํ•˜๋„๋ก 2. ์—”ํ„ฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ‚ค๋ณด๋“œ๊ฐ€ ๋‚ด๋ ค๊ฐ€๋„๋ก 3. ํ‚ค๋ณด๋“œ ์—”ํ„ฐ์ชฝ์— "Enter"๋ผ๋Š” ๊ธ€์ž๊ฐ€ ์•„๋‹Œ ๋‹๋ณด๊ธฐ ์•„์ด์ฝ˜์ด ๋‚˜์˜ค๊ฒŒ ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ

sovovy.tistory.com

 

 

์•„์ง ๊ตฌํ˜„์ค‘์ด๋ผ, ๋‹ค์Œ์ฃผ ์ค‘์— ํ•ด๋‹น ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•˜๊ฒ ๋‹ค.

 

 

 


 

5. ๊ธฐํƒ€ ๋‚ด์šฉ ์ •๋ฆฌ

 

์ตœ์ข… ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ธฐ์ˆ  ์Šคํƒ์„ ์ƒ๊ฐํ•˜๋ฉด์„œ, ํŒ€์›๋ถ„๊ณผ ๋Œ€ํ™”ํ•œ ๋ช‡๋ช‡ ๋‚ด์šฉ๋“ค์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.

 

1. Firebase Realtime Database VS Firestore

 

[Firebase]๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„๊ต(Realtime vs Cloud Firestore)

๋ฆฌ์–ผํƒ€์ž„์ด๋ž‘ ํŒŒ์ด์–ด์Šคํ† ์–ด์ค‘์— ๋ญ˜์“ฐ๋ฉด ์ข‹์„๊นŒ๋‚˜๋ฆฌ์•ก์ “?

velog.io

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ ํƒ: Cloud Firestore ๋˜๋Š” ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค  |  Firebase

5์›” 14์ผ, Google I/O์—์„œ Firebase๋ฅผ ๋‹ค์‹œ ๋งŒ๋‚˜๋ณด์„ธ์š”. ์ง€๊ธˆ ๋“ฑ๋กํ•˜๊ธฐ ์˜๊ฒฌ ๋ณด๋‚ด๊ธฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ ํƒ: Cloud Firestore ๋˜๋Š” ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ์ •๋ฆฌํ•˜๊ธฐ ๋‚ด ํ™˜๊ฒฝ์„ค์ •์„ ๊ธฐ์ค€์œผ๋กœ ์ฝ˜ํ…

firebase.google.com

  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ตœ๊ทผ์—” firestore๊ฐ€ realtime database๋ฅผ ๋Œ€๋ถ€๋ถ„ ๋Œ€์ฒดํ•˜์˜€๊ณ , ํŠนํžˆ ์ผ์ผ์—…๋ฐ์ดํŠธ๊ฐ€ ์ ๊ณ  read ์œ„์ฃผ๋กœ ๋™์ž‘ํ•œ๋‹ค๋ฉด ๋”๋”์šฑ firestore๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค. 

 

 

2. Clean Architecture

 

[Android] ์š”์ฆ˜ ํ•ซํ•œ Clean Architecture ์™œ ์“ฐ๋Š” ๊ฑฐ์•ผ? : NHN Cloud Meetup

[Android] ์š”์ฆ˜ ํ•ซํ•œ Clean Architecture ์™œ ์“ฐ๋Š” ๊ฑฐ์•ผ?

meetup.nhncloud.com

 

๋งˆ์ผ€ํ„ฐ๋„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๋Š” ‘ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜’ | ์š”์ฆ˜IT

์•Œ๋ผ๋ฏธ๋Š” ์œ ์ €๋“ค์˜ ๋‹ค์–‘ํ•œ ๋‹ˆ์ฆˆ๋ฅผ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์•Œ๋žŒ ์†Œ๋ฆฌ๋ฅผ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์œผ๋กœ ์ปค์Šคํ…€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ตœ๊ทผ ์•ˆ๋“œ๋กœ์ด๋“œ ์•Œ๋ผ๋ฏธ ์•ฑ์— ์ธํ”Œ๋ฃจ์–ธ์„œ ๋ฒจ์†Œ๋ฆฌ ๊ธฐ๋Šฅ์„

yozm.wishket.com

 

Architecture & Clean Architecture - part.2

์•„ํ‚คํ…์ฒ˜์™€ ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ 2

velog.io

  • ํŒ€์›๋ถ„์ด ์•„ํ‚คํ…์ฒ˜ ์ค‘ ํ˜„์—…์—์„œ ์ •๋ง ๋งŽ์ด ์“ฐ์ธ๋‹ค๋Š” ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์ƒ์„ธํžˆ ์„ค๋ช…ํ•ด์ฃผ์…จ๋‹ค.
  • ํด๋ฆฐ์•„ํ‚คํ…์ฒ˜์˜ ํ•ต์‹ฌ์€ ์˜์กด์„ฑ ๋ฐฉํ–ฅ์— ์žˆ๋‹ค. ์•ˆ์ชฝ์˜ ์›์€ ๋ฐ”๊นฅ์ชฝ์˜ ์ •๋ณด๋ฅผ ์•Œ๊ฑฐ๋‚˜ ์ ‘๊ทผํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.
    ๋ฐ”๊นฅ์— ์žˆ๋Š” ์›์ผ์ˆ˜๋ก ์‰ฝ๊ฒŒ ๋ณ€ํ•˜๋Š” ๊ฒƒ๋“ค์ด๋‹ค.
    ๊ตฌ์กฐ๋Š” ํฌ๊ฒŒ ๋„๋ฉ”์ธ ๋ ˆ์ด์–ด(์—”ํ‹ฐํ‹ฐ, ์œ ์ฆˆ์ผ€์ด์Šค), ์–ด๋Œ‘ํ„ฐ ๋ ˆ์ด์–ด, ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜ ๋ ˆ์ด์–ด๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
  • MVVM์„ ์ด์ œ ๋ง‰ ๋ฐฐ์šฐ๊ณ  ์žˆ๋Š” ๋‹จ๊ณ„์ง€๋งŒ, ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜์˜ ์‚ฌ์šฉ ์ด์œ ์— ๋Œ€ํ•ด์„  ์ดํ•ด๊ฐ€ ์ž˜ ๋๋‹ค.

 

 

3. Gson VS Moshi

 

[Android] Gson์„ ๋Œ€์ฒดํ•˜๋Š” Moshi

์ฃผ์˜! ๋ณธ ํฌ์ŠคํŒ…์€ ChatGPT๋ฅผ ํ†ตํ•ด ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค Caution! This Posting was made with ChatGPT Moshi๋ž€? Moshi๋Š” Square์—์„œ ๊ฐœ๋ฐœํ•œ JSON ํŒŒ์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Gson๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ, ์„ฑ๋Šฅ์ด ๋” ๋น ๋ฅด๊ณ  ์ฝ”ํ‹€๋ฆฐ๊ณผ์˜ ํ˜ธ

ohdbjj.tistory.com

 

Moshi, Moshi~ ์ง๋ ฌํ™”๋ฅผ ์›ํ•˜์‹ ๋‹ค๊ตฌ์š”?

JSON ์ง๋ ฌํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ธ Moshi๊ฐ€ ๋ฌด์—‡์ธ์ง€, ์–ด๋–ค ์žฅโˆ™๋‹จ์ ์ด ์žˆ๋Š”์ง€, GSON๊ณผ๋Š” ์–ด๋–ค ์ฐจ์ด์ ์ด ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

blog.imqa.io

  • ์‹ฌํ™” ๊ฐ•์˜์—์„œ๋Š” Json ๋ฐ์ดํ„ฐ์™€ ์ž๋ฐ” ๊ฐ์ฒด ๊ฐ„์˜ ์ง๋ ฌํ™”/์—ญ์ง๋ ฌํ™”๋ฅผ ์œ„ํ•ด Gson์„ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ ์ด Gson๋„ ์‚ฌ์‹ค์€ ์˜›๋‚  ๊ธฐ์ˆ ์ด๊ณ , ์ตœ๊ทผ์—” Moshi๋กœ ์ „ํ™˜ํ•˜๋Š” ์ถ”์„ธ๋ผ๊ณ  ํ•œ๋‹ค.
    ์•„๋งˆ Moshi๋ฅผ ๋ฐ”๋กœ ๋ฐฐ์›Œ์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

 

 

 


 

 

๐Ÿ’ญ Retrospect

์ €๋ฒˆ์ฃผ/์ด๋ฒˆ์ฃผ๋Š” ํ•ด์™ธ ์—ฌํ–‰๋„ ๋‹ค๋…€์˜ค๊ณ , ํœด์ผ๋„ ๋งŽ๊ณ , ๊ทธ ์™€์ค‘์— ๋ชธ๊นŒ์ง€ ๋ง์ฝ์ด๋ผ ๋ณ‘๊ฐ€๊นŒ์ง€ ๋‚ด์„œ ์บ ํ”„ ์‹œ์ž‘ ์ด๋ž˜๋กœ ์ถœ๊ฒฐ๋„ ์ œ์ผ ์—‰๋ง์ด๋ฉฐ ์‹œ๊ฐ„๋„ ๋งค์šฐ ๋ถ€์กฑํ–ˆ๋˜ ์ฃผ๋‹ค. ๊ทธ ๋ถ€์กฑํ•œ ์‹œ๊ฐ„์„ ๋งŒํšŒํ•˜๊ธฐ ์œ„ํ•ด ๊ธˆ์š”์ผ๋ถ€ํ„ฐ ์ฃผ๋ง์„ ๋‹ค ๊ณต๋ถ€์— ํˆฌ์žํ•˜๊ณ  ์žˆ๋‹ค.

์—ฌ์œ ๋กญ๊ฒŒ ๊ฐœ์ธ ๊ณต๋ถ€ ์‹œ๊ฐ„์ด ์ฃผ์–ด์ง„๋‹ค๋ฉด ๊ธˆ๋ฐฉ ๋”ฐ๋ผ์žก์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๊ธดํ•œ๋ฐ, ๋ถ€ํŠธ์บ ํ”„๋ผ๋Š” ๊ฒƒ ์ž์ฒด๊ฐ€ ์ง„๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๊ณ  ํŒ€ํ”„๋กœ์ ํŠธ ์ฃผ๊ฐ„์ด ๊ณ„์† ๋Œ์•„์™€์„œ (์ „ ์ฃผ๊นŒ์ง€๋Š” ๋ฆฌ์‚ฌ์ดํด๋Ÿฌ๋ทฐ, ๋ทฐ๋ฐ”์ธ๋”ฉ, ๋‹ค์ด์–ผ๋กœ๊ทธ์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ๋ฐฐ์šฐ๋‹ค๊ฐ€ ๊ทธ ๋‹ค์Œ์ฃผ๋ถ€ํ„ฐ๋Š” Retrofit, MVVM, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Room ๋“ฑ), API ๋“ฑ์„ ์ด์šฉ) 1์ฃผ์ผ์„ ๋†“์น˜๋ฉด ๋‹ค๋ฅธ ์ˆ˜๊ฐ•์ƒ ์ˆ˜์ค€๊นŒ์ง€ ๋”ฐ๋ผ๊ฐ€๊ธฐ๊ฐ€ ์ƒ๋‹นํžˆ ๋ฒ…์ฐจ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฏธ๋ž˜์— ์ด ๊ธ€์„ ๋ณผ ์บ ํ”„์ˆ˜๊ฐ•์ž๊ฐ€ ์žˆ๋‹ค๋ฉด ์ตœ๋Œ€ํ•œ ํ•˜๋ฃจ 12์‹œ๊ฐ„์„ ์˜จ์ „ํžˆ ์ฝ”๋”ฉ ๊ณต๋ถ€์— ํˆฌ์žํ•˜๊ณ  ์ถœ๊ฒฐ ๊ด€๋ฆฌ ์ž˜ํ•ด์„œ ๋‚˜์ฒ˜๋Ÿผ ๊ณ ์ƒํ•˜์ง€ ์•Š๊ธธ ๋ฐ”๋ž€๋‹ค.

๋ฒ ์ด์ง๋ฐ˜์œผ๋กœ ๋‚ด๋ ค๊ฐ„ ๊ฒƒ์€ ์ตœ์ข… ํ”„๋กœ์ ํŠธ๊ฐ€ ์ง„ํ–‰๋˜๊ธฐ ์ „ ๋‚จ์€ 2์ฃผ๋™์•ˆ์€ ์ •๋ง ๊ทธ๋™์•ˆ ๋ชป ๋”ฐ๋ผ๊ฐ”๋˜ ๋‚ด์šฉ์„ ์ƒ์„ธํžˆ ํŒŒํ—ค์น˜๊ณ  ์™„๋ฒฝํ•˜๊ฒŒ ๋งˆ์Šคํ„ฐํ•˜๊ณ  ์‹ถ์–ด์„œ๋‹ค. ๋‹น๋ถ„๊ฐ„ UI๋‚˜ ๋‹ค๋ฅธ ๋ชฉํ‘œ์— ๋Œ€ํ•œ ์‹ ๊ฒฝ์„ ์ข€ ๋„๊ณ , ์ •๋ง ์ฝ”๋“œ ๊ตฌํ˜„์—๋งŒ 2์ฃผ๋ฅผ ์Ÿ์•„๋ถ€์„  ๊ฒƒ์ด๋‹ค. ์ตœ์ข… ํ”„๋กœ์ ํŠธ๋Š” ์ •๋ง ์™„๋ฒฝํ•˜๊ฒŒ ์ง„ํ–‰ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค. ๋‹น์—ฐํ•œ ์†Œ๋ฆฌ์ง€๋งŒ, ์กฐ๊ธˆ์ด๋ผ๋„ ์–ด๋ ต๊ฒŒ ๋Š๊ปด์ง„๋‹ค๋ฉด ๋‚จ๋“ค๋ณด๋‹ค ๋ฐฐ๋Š” ์—ด์‹ฌํžˆ ํ•ด์•ผํ•œ๋‹ค.

โ€‹

 

 

 

 

๋ฐ˜์‘ํ˜•
 ๐Ÿ’ฌ C O M M E N T