TIL : 스파르타코딩 Android 과정 7기
주의점
- 매일 : TIL : today I learned 작성하기
- github에 issue 꼼꼼히 쓰기
- 주석 잘 적어 넣기
- 발표시간 준
학습 목적 :
- Android 입문 학습에 이어 드디어 숙련주차가 시작됩니다. 2주동안 Android 앱개발 입문 학습을 바탕으로 개인과제와 팀 프로젝트를 완료함으로써 우리는 이제 막 숙련 학습을 위한 첫 허들을 넘었습니다. 든든한 기초 체력을 이용해서 앱개발 숙련주차도 섭렵해보도록 합시다!
- 앱개발 과정은 총 3가지(입문/숙련/심화)로 구성되어 있습니다. 그 중 우리는 이제 절반 왔습니다. 숙련 주차를 시작하게 되는 것이에요!
- 앱개발 숙련 과정을 통해서는 Android의 뷰바인딩과 어댑터뷰, 프래그먼트 등에 대해 배우게 됩니다.
- 숙련 과정에서 프래그먼트와 액티비티의 차이와 생명주기를 이해하고 다뤄보며 지식과 경험을 쌓습니다.
학습 목표 :
- 뷰바인딩에 대해 이해하고 findViewById와의 차이점을 설명할 수 있습니다.
- 어댑터 뷰의 기본 개념 및 종류를 이해하고 리스트 뷰와 그리드 뷰의 설정 방법을 이해한다.
- 커스텀 항목 뷰를 정의하는 방법을 이해하고 RecyclerView를 사용하는 방법을 이해한다.
- 프래그먼트의 기본개념 및 프래그먼트 생명주기를 이해한다.
- 태블릿용 및 스마트폰용 디바이스에서 프래그먼트를 재 사용할 수 있는 방법을 실습한다.
- 다이얼로그가 무엇인지 알고 구조에 대해 이해했습니다.
- 알림을 생성하고 중요도 순서를 이해했습니다
오늘 계획 :
-
오전
09:00 ~ 10:00 : 오늘 계획 확인하기 + 팀 회의
- 오늘 계획 (Task)
- 팀 회의 : 데일리 스크럼
- 알고리즘 문제 1개 풀기
- 앱 개발 숙련 : 강의 듣기
- TIL 작성하기
- 팀 회의 : 마무리 회고 진행
10:00 ~ 10:30
: 알고리즘 문제 풀기
10:30 ~ 12:00
: 복습하기
-
집중 코딩
13:00 ~ 18:00
: 앱 개발 숙련 강의 듣기
-
저녁
19:00 ~ 20:30
: TIL 작성하기 & 노션 정리하기
20:30 ~ 21:00
: 마무리 회고 진행
요점 정리 :
RecyclerView
implementation("androidx.recyclerview:recyclerview:1.2.1")
implementation("androidx.recyclerview:recyclerview-selection:1.1.0")
사용 기능 :
val list = listOf('a', 'b', 'c', 'a', 'c')
println(list.distinct())
알고리즘 :
https://school.programmers.co.kr/learn/courses/30/lessons/120888
class Solution {
fun solution(my_string: String): String = my_string.toList().distinct().joinToString("")
}
팀(or 개인) 프로젝트 :
후발대 개인 과제 : 리사이클러뷰 이용하여 연락처 리스트 앱 만들기
- 레이아웃 요구사항
- 메인 화면에는 RecyclerView 하나만 표시합니다.
- 연락처 아이템 레이아웃에는 사진, 이름, 전화번호를 표시하는 뷰가 포함되어야 합니다.
- 데이터 모델 요구사항
- 연락처 클래스: 사진, 이름, 전화번호, 즐겨찾는여부 필드를 포함합니다.
- 더미 데이터 요구사항
- 10명 이상의 연락처 더미 데이터를 생성합니다. 각 연락처는 사진, 이름, 전화번호, 즐겨찾기여부를 포함해야 합니다.
- 어댑터 요구사항
- 어댑터 클래스: RecyclerView.Adapter를 확장합니다.
- 연락처 데이터를 바인딩하는 로직이 포함되어야 합니다. → ViewBinding 활용 해보기
- 데이터모델의 즐겨찾는 여부에 따라 viewType을 나눠 표시해보세요 (즐겨찾기) ViewType은 총 두개입니다.
- RecyclerView 설정 요구사항
- 메인 활동에서 RecyclerView를 어댑터와 연결하고, 더미 데이터를 로드하여 표시합니다.
- 추가 선택 과제
- 실제 폰에 있는 연락처를 불러옵니다. (READ_CONTACTS 권한이 필요합니다.)
- 아이템 클릭 이벤트 처리 요구사항
- 추가 선택 과제
- 전화를 걸어 봅시다 (hint : tel://, runtime permission)
앱 개발 숙 : 개인 과제 : 사과 마켓 만들기
메인 페이지 만들기
- 디자인 및 화면 구성을 최대한 동일하게 해주세요. (사이즈 및 여백도 최대한 맞춰주세요.) ✨
- 상품 데이터는 아래 dummy data 를 사용합니다. (더미 데이터는 자유롭게 추가 및 수정 가능)
- 데미데이터 : 이미지 링크, 상품 리스트 링크
- RecyclerViewer를 이용해 리스트 화면을 만들어주세요.
- 상단 툴바를 제거하고 풀스크린 화면으로 세팅해주세요. (statusbar는 남기고)
- 상품 이미지는 모서리를 라운드 처리해주세요.
- 상품 이름은 최대 두 줄이고, 그래도 넘어가면 뒷 부분에 …으로 처리해주세요.
- 뒤로가기(BACK)버튼 클릭시 종료하시겠습니까? [확인][취소] 다이얼로그를 띄워주세요. (예시 비디오 참고)
- 상단 종모양 아이콘을 누르면 Notification을 생성해 주세요. (예시 비디오 참고)
- 상품 가격은 1000단위로 콤마(,) 처리해주세요.
- 상품 아이템들 사이에 회색 라인을 추가해서 구분해주세요.
- 상품 선택시 아래 상품 상세 페이지로 이동합니다.
- 상품 상세페이지 이동시 intent로 객체를 전달합니다. (Parcelize 사용)
상세 페이지 만들기
- 디자인 및 화면 구성을 최대한 동일하게 해주세요. (사이즈 및 여백도 최대한 맞춰주세요.) ✨
- 메인화면에서 전달받은 데이터로 판매자, 주소, 아이템, 글내용, 가격등을 화면에 표시합니다.
- 하단 가격표시 레이아웃을 제외하고 전체화면은 스크롤이 되어야합니다. (예시 비디오 참고)
- 상단 < 버튼을 누르면 상세 화면은 종료되고 메인화면으로 돌아갑니다.
선택 과제
1. 스크롤 상단 이동!
- 스크롤을 최상단으로 이동시키는 플로팅 버튼 기능 추가
- 플로팅 버튼은 스크롤을 아래로 내릴 때 나타나며, 스크롤이 최상단일때 사라집니다.
- 플로팅 버튼을 누르면 스크롤을 최상단으로 이동시킵니다.
- 플로팅 버튼은 나타나고 사라질때 fade 효과가 있습니다.
- 플로팅 버튼을 클릭하면(pressed) 아이콘 색이 변경됩니다.
2. 상품 삭제하기!
- 상품을 롱클릭 했을때 삭제 여부를 묻는 다이얼로그를 띄우고
- 확인을 선택시 해당 항목을 삭제하고 리스트를 업데이트한다.
- 해당 상품이 삭제되었는지 확인!!
3. [찐도전과제] 좋아요 처리!! ← 많은 고민이 필요합니다.
- 상품 상세 화면에서 좋아요 선택시 아이콘 변경 및 Snackbar 메세지 표시
- 메인 화면으로 돌아오면 해당 상품에 좋아요 표시 및 좋아요 카운트 +1
- 상세 화면에서 좋아요 해제시 이전 상태로 되돌림
아쉬운 점 or 앞으로의 계획 :
숙련 강의 다시 한 번 복습하기