이 프로젝트는 카카오뱅크 과제를 모티브로 제작한 개인 프로젝트입니다.
검색 API는 Kakao Developers Open API인 다음 검색을 사용하였습니다.
유저는 검색을 통해 키워드에 맞는 이미지와 영상을 검색할 수 있습니다.
또한 왼쪽 상단의 Bookmark 버튼을 눌러 북마크 목록에 추가할 수 있습니다.
이렇게 저장된 정보는 SharedPreference로 기기내에 저장되어 앱이 종료돼도 재실행 시 다시 로드 됩니다.
infinite Scroll을 사용해 RecyclerView의 하단에 도착하면 자동으로 다음 페이지를 받아옵니다.
스크롤이 최상단이 아닐때만 나오는 FloatingActionButton으로 리스트의 최상단으로 이동할 수 있습니다.
- ViewModel, LiveData, Repository을 사용한 MVVM 구조
- 유지 보수성과 확장성을 높이기 위해 View와 Business Logic을 분리 하였습니다.
- 디테일과 완성도를 위해 실제 카카오 어플리케이션에서 사용하는 아이콘과 색상을 참조해서 만들었습니다.
Android Jetpack
- Data Binding
- LiveData
- ViewModel
- SharedPreferences
Third Party Libraries
- Retrofit2
- Glide
- Kotlin Coroutine
UI Frameworks and Components
- ConstraintLayout
- Material Design
- RecyclerView
- Fragment
- ViewPager2
- TabLayout
- SearchView
Data Source
- Search data retrieved using Kakao Developers Open API
common/
utils/
CommonUtils.kt
: 프로젝트 전반에 사용되는 유틸리티 함수 모음
Constans
: 프로젝트 전반에 사용되는 상수 값 모음EntryType
: 프로젝트 전반에 사용되는 진입타입 결정SharedViewModel.kt
: Fragment간 공유되는 데이터를 관리
data/
api/
Retrofit
: Retrofit을 통한 API 호출 인터페이스 정의
model/
ImageSearchResponse
: 이미지 정보를 받아오는 데이터 모델VideoSearchResponse
: 영상 정보를 받아오는 데이터 모델
Repository
:RetrofitClient
: Retrofit 인스턴스 및 설정 관련 로직
main/
MainActivity
: 앱의 메인 액티비티MainTabs
: 메인 탭 관리ViewPagerAdapter
: 뷰 페이저 어댑터
model/
BookmarkModel.kt
: 북마크 데이터 모델SearchModel.kt
: 검색 데이터 모델
ui/
: 애플리케이션의 UI를 담당하는 Fragment 및 Adapterbookmark/
BookmarkFramgment
: 북마크 화면 UI 및 로직 처리BookmarkListAdapter
: 북마크 화면에서 사용하는 리사이클러뷰 어댑터
search/
SearchFragment
: 검색 화면 UI 및 로직 처리SearchListAdapter
: 검색 화면에서 사용하는 리사이클러뷰 어댑터
viewmodel/
: MVVM의 ViewModel을 포함하며, UI 로직과 데이터의 중개 역할을 합니다. LiveData를 사용하여 UI의 상태 및 데이터 변경을 관찰합니다. 비즈니스 로직이 구현되어 있습니다.bookmark/
BookmarkViewModel
: 북마크 화면의 데이터 및 로직 처리를 담당BookmarkViewModelFactory
: BookmarkViewModel 생성을 위한 Factory 클래스
search/
SearchViewModel
: 검색 화면의 데이터 및 로직 처리를 담당SearchViewModelFactory
: SearchViewModel 생성을 위한 Factory 클래스