Google의 안드로이드 Sample인 Sunflower를 분석해 보았습니다.
MVVM
과 Hilt
에 대한 기본적인 이해가 있으면 소스를 이해하기 편합니다.
Gallery 화면의 Network단까지 실행해보기 위해서는 Unsplash API Key가 필요합니다.
아래부터는 화면과 모듈별로 제 기준에서 중요하다고 생각되는 기능들을 정리했습니다.
BindingAdapter
에서 Glide
로 url에 위치한 이미지를 보여줌TabLayout
과 ViewPager
를 활용 해 Garden 화면과 Plant List 화면으로 분기할 수 있게 구성createFragment
로직은 참고할 만함PlantAndGardenPlantings
에서 Plant
와 GardenPlanting
의 관계를 1:N
으로 설정함 (1가지 식물은 1번 밖에 못 심는데 1:1으로 해도 되지 않을까?)DiffUtil
을 사용하는 RecyclerView
PLANT LIST
탭을 누르면 보여지는 화면DiffUtil
을 사용하는 RecyclerView
NO_GROW_ZONE
과 GROW_ZONE_9
을 토글할 수 있음SaveStateHandle
, Flow
, flatMapLatest
를 이용해 필터링 로직을 구현함+
버튼을 눌러 식물을 정원에 심을 수 있음Share Intent
사용해 공유 기능 구현SaveStateHandle
에서 가져옴BindingAdapter
에서 HtmlCompat
으로 HTML 렌더링gradle.properties
에 unsplash_access_key
값이 존재해야 함)DiffUtil
을 사용하는 PagingDataAdapter
Paging
구현을 위해 Job
, Flow
, collectLatest
활용Room
WorkManager
를 통해 파일을 읽어와 기초 데이터를 생성하는 로직이 있음Hilt
를 통해 DB를 생성하고 Dao를 Repository에 주입함R
은 Flow
, CUD
는 Coroutine
으로 구현plants
: 정원에 심을 수 있는 식물의 Master Datagarden_plantings
: 사용자가 정원에 식물을 심은 Transaction DataRetrofit
, GsonConverter
를 사용하여 Unsplash 이미지 검색 API 호출Hilt
를 통해 API Service 생성