화면 | 내용 | 기능 |
---|---|---|
로그인 | Google 계정을 이용해 간편 로그인 | - Google Login - 자동 로그인 |
홈 | 사진을 업로드하거나 이미지 찾기를 이용해서 AI에게 이미지 분석을 요청 |
- 사진 업로드 1. 갤러리에서 가져오기 2. 카메라로 직접 찍어서 가져오기 - 사진 분석 요청 - 사진 분석 결과 컬렉션 저장 및 공유하기 |
컬렉션 | 다른 사람들이 공유한 사진과 내용을 볼 수 있는 갤러리 | - 검색 - SNS 공유하기 및 복사하기 - 내 컬렉션에 저장하기 - 리스트형/앨범형 목록 |
마이페이지 | 마이페이지 | - 내 계정 정보 - 내 컬렉션 관리 - 유저 설문조사 - 로그아웃 |
- MVVM 디자인 패턴 : Flow, LiveData
비동기 데이터 스트림을 수신하기 위해 LiveData를 Flow로 마이그레이션
→ ViewModel은 remote에서 Flow를 통해 데이터를 얻어오고 View가 LiveData를 관찰하도록 리팩토링 - 의존성 주입 : Dagger-Hilt
코드의 중복과 객체간 결합도 줄이기 위해 앱의 여러 컴포넌트에서 공통적으로 사용되는 객체를 한 곳에서 관리하는 SaraAppModule을 만들고, Hilt annotation을 사용해서 각각의 컴포넌트에서 의존성 주입하여 사용 - Jetpack : Lifecycles, LiveData, ViewModel, DataBinding, Navigation
- 네트워크 통신 : Retrofit2, Okhttp3, Gson
Json 방식을 활용하여 Sara 서버와 REST API 통신 - 비동기 처리 : Coroutine, Flow
Flow를 사용해 비동기 데이터 흐름 수신 - etc.
Google OAuth2.0
MotionLayout을 이용하여 캐릭터 애니메이션 구현
Glide
UI: ConstaintLayout, MotionLayout, RecyclerView, Lottie
2023.2.26
코드 리팩토링 : ImageUploadViewModel 라이프사이클 문제 해결2023.2.23
코드 리팩토링 : LiveData → Flow로 마이그레이션패키지 구조 리팩토링