1주차
<필수>
registerForActivityResult
putExtra
토스트 메세지 띄우기
EditText에서 inputType을 조절해 입력된 비밀번호 안 보이게 하기
스낵바 띄우기
회원가입 성공 조건 걸고 충족 시 액티비티 전환
constraintDimensionRatio
<심화>
chain
ConstraintLayout Flow
<도전>
SharedPreference를 활용해서 자동 로그인 구현
홈화면에서 뒤로 가기를 누르면 로그인 화면으로 넘어가지 않고 바로 앱이 종료되게 하기
(Hint : Intent Flags, Activity Task)
2주차
<필수>
Multi-View Type RecyclerView를 힌트삼아 하단으로 스크롤 할 때 헤더(TextView)도 같이 따라 내려가게 하기
<심화>
바텀네비게이션에서 홈 element가 눌려져있을 때 한 번 더 누르면 상단으로 갈 수 있게 하기 (Scroll To Top)
(Hint : BottomNavigation.setOnNavigationItemReselectedListener)
Fragment 생명주기 알아보기
NotifyDataSetChanged를 사용했을 때 리사이클러뷰에서 어떤 문제가 생길 수 있고 이를 개선한 여러 기능들 중 하나를 활용하여 리사이클러뷰의 성능을 개선해보기
RecyclerView-Selection 라이브러리를 사용해서
- 리사이클러뷰 내 아이템 다중선택 구현해보기
- 선택된 아이템 뷰에 선택 효과 주기
- 특정 버튼을 눌렀을 때 선택된 아이템들이 삭제될 수 있게 하기
<도전>
json 포맷의 데이터를 파싱해서 리사이클러뷰에 뿌려주기
4주차
<필수>
레트로핏을 활용해서 실제 회원가입/로그인 기능 구현하기
* kotlinx.serialization를 활용해야 함
모든 입력값을 받으면 회원가입 버튼을 누를 수 있게 하기
GET으로 API에서 유저데이터를 받아오고 이를 리사이클러뷰에 뿌려주기
<심화>
카카오 검색 API를 활용하기
- 키워드를 입력하고 검색 버튼을 누르면 통신이 이루어지는데 이때의 response를 리사이클러뷰에 반영하기
- 검색 결과가 없다면 Empty UI로 대체하기
코루틴으로 서버 통신하기
OkHttp Loggin Interceptor 활용하기
- Logging Interceptor를 활용하여 서버 통신의 Reqeust/Response를 Logcat에 띄울 수 있게 하기
<도전>
페북이나 인스타에서의 실시간 검색을 Debounce(Throttle) Search라고 하는데 이 기능에 대해 조사해보고 직접 구현해보기
6주차
<필수>
4주차에 작성했던 서버 통신 로직을 뷰모델을 활용해서 View와 분리해보기
회원가입/로그인 조건 설정하고 충족되지 않았을 경우 경고 문구 띄우기 및 버튼 비활성화
(Hint : LiveData의 map)
<심화>
합동세미나 때 작성한 코드들을 UI Layer로 분리해보기
EditText에서 데이터를 받아올 때 addTextChangeListener를 쓰지 말고 양방향 databinding으로 코드 로직 개선해보기
로딩 뷰 사용하기
- 서버통신 요청을 하고 응답 받기 직전까지 로딩 뷰를 계속 보여주면 된다
- 응답 요청 성공 시 결과를 보여주고 실패 시 빈화면 혹은 실패 화면 보여주기
<도전>
이번 과제의 ViewModel 로직에서 서버 통신 로직을 추상화해서 Data Layer를 구현해보기
7주차
<필수>
API를 활용해서 멀티파트 서버통신해보기
'Android > 공부' 카테고리의 다른 글
retrofit의 비동기 처리 (0) | 2024.04.29 |
---|---|
Flow (2) | 2024.03.14 |
Repository의 효용에 대한 고찰 (0) | 2023.03.16 |
[공부] Github Action CI (0) | 2023.03.04 |
[공부] MVVM, ViewModel, LiveData, DataBinding, Fragment (1) | 2023.01.21 |