-
Notifications
You must be signed in to change notification settings - Fork 4
📆 Daily Scrum
DongHyeon Park edited this page Dec 15, 2022
·
58 revisions
-
아이디어 회의 → 쇼츠를 활용한 일기장 앱
-
Feature List 작성 및 소요 시간 예상
-> Feature List
-
Project Name 고민 (미완료)
- clip
- day
- shorts
- stamp
- Project Name(앱 이름) 정하기
- Github Repository 생성
- wiki 정리
- project 생성
- 그라운드 룰 정하기
- 컨벤션 정하기
- 개발 환경 통일
- 기능적, 기술적 feature list 마무리
- 프로젝트 이름 정하기 -> DailyFilm
- 그라운드 룰 작성
- 코드 컨벤션 작성
- Git 컨벤션 작성
- Github Projects, Labels, Milestone 설정
- 프로젝트 생성 및 gradle 의존성 추가
- PR로 Issue Resolve 처리
- Figma 보충
- 멘토님과 회의
- 멘토님 피드백 받은 후에 프로젝트 보충
- 로그인 화면 (구글 로그인)
- 영상 업로드 화면에 대한 고찰
- 일반적인 업로드처럼 갤러리에서 선택하기
- 인스타그램처럼 선택한 영상을 보여주면서 고르기 ✅
- 영상 편집 화면
- 전체 길이가 5초인 건 고정, 슬라이드를 움직여 시작 지점만 변경하게 하기
- 내용 작성 화면에 대한 고찰
- 배경에 영상이 재생되고 있고 그 위에 내용을 적기 1️⃣
- 상단에 영상이 보이고 하단에 내용을 적기 2️⃣
-
멘토님 자료
-
숏츠 동영상 보기 화면
- viewPager로 구성
-
Activity vs Fragment
-
리소스가 무겁고, 동영상 크기 및 메모리를 위해서 Fragment 구성 보다는 Activity로 하는걸 추천
-> 종료랑 시작이 명확하므로, 동영상 시작 종료 관련 처리가 간편한 느낌
-
-
동영상 불러오기
- 동영상 최적화에서 시간이 필요할것으로 예상
-
동영상 편집
-
동영상 기본 개념 (악 공부 필요)
- iframe
- decoding
-
심화 기술 (참고)
- 네트워크 느릴경우 저화질로 스트리밍
-
UI Kit
- 큰 틀
- 캘린더 : 준형, 재현
- 영상 : 무현, 동현
- week1 분담 사항
- 각 파트별 회의 후 내용 정리 후 금요일 스크럼 시 공유
- 금일 논의 된 분담기능
- Firebase 로그인
- 기본 화면 틀 구성
- DB 구조 설계
- 추가 논의 필요 사항
- 로그인 페이지 필요 유무
- 파트별 회의 진행 후 오후 6시에 내용 중간 공유
- 오전 스크럼시, MVVM 패턴 관련 Base 내용 논의
1. Base, Hilt, Application 논의 및 셋팅
- Base 생성 및 적용
- Hilt Application 파일 수정
- registerActivityLifecycleCallbacks 추가를 통한 Logging
2. 작업소 Fork
3. 금일 작업계획 공유
-
영상
- 외부 라이브러리 참고
- MediaStore & ContentResolver 활용한 갤러리 내 비디오 불러오기
- 상단 영상 미리보기 재생에 대한 고찰
-
캘린더
- 외부 라이브러리 참고 (멘토님 추천)
- ViewPager2 + RecyclerView or CustomView 활용하여 캘린더 구현
- RecyclerView로 먼저 구현한 후 성능상 문제 발생시 CustomView로 구현하여 비교
- 기획공유 발표 전 모의 발표
- 피드백 후 수정, 예상 질문 도출
- 회고 (다음주 계획)
- 설계 공유 모의 발표 진행 (재현)
- 피드백 진행
- google-service.json hide 처리 필요 (+ API 키 재발급)
- 캠퍼들 피드백 사항
- 단순한 기술 나열보다 각 기술들을 어떻게 사용할 수 있는지 명시하는 것이 더 좋아 보인다
- 작년 부캠의 캘린더 커스텀 라이브러리를 참고해도 좋을 것 같다
- 아이디어 멋지다
- 질문 내용
- encoding 이나 압축에 대해서 고려하고 있나요?
- 커스텀 캘린더로 만들 경우 외부 라이브러리를 사용한다면 어떤 라이브러리를 사용하실 건가요?
- 이미지 혹은 긴 영상이 아닌 5초로 정하신 이유가 무엇인가요?
-
동현
- 좋은 점: 의견 통일이 빠르게 되었고, Ground Rule을 정하는 데에 긴 시간이 걸리지 않았다.
- 아쉬운 점: 설계 단계에서 작성한 문서 량이 어떻게 보면 부족하다고 볼 수도 있는 것 같지만(UML 작성 등), 마스터 님의 조언을 들어보니 선택사항인 것 같아서 사실 크게 아쉽지는 않다.
- 개선할 점: Github의 여러 기능을 거의 처음 사용해보는 것이라 아직은 Issue 작성 등에 대해 숙련도가 떨어지는 것 같다. 하지만 이것도 시간이 지나면 금방 익숙해질 것이라고 생각한다.
-
무현
- 좋은 점 : 적은 화면수로, 핵심 기능에 집중 할 수있고 기획이 좋다.
- 아쉬운 점 : 기능에 대한 적용 기술에 대한 이해가 아직 부족함
- 개선할 점 : 기능에 대한 필요한 기술을 더 학습하는 시간을 주말에 가져서 보충하기
-
재현
- 좋은 점: 주제를 빠르게 선정하였고, 의견 충돌 없이 진행되었다.
- 아쉬운 점:
- Figma 활용법을 잘 몰라 생각한 느낌대로 화면을 구성하는 것이 힘들었다.
- 처음 해보는 구현이 많아 예상 소요 시간을 계산하기 힘들었다.
- 개선할 점: 처음 접하는 라이브러리, 기술들에 대한 학습이 필요하다. (특히 영상)
-
준형
- 좋은 점: 기획이 빠르고 의견 충돌 없이 업무 분담이 빠르다.
- 아쉬운 점: 핵심 기능에 대해 확실한 일정 관리가 부족하다. ( 처음 다루는 기능이기 떄문 )
- 개선할 점: 핵심 기능에 대한 학습과 더욱 세세한 계획 세우기, 모든 학습 내용 정보 공유!!
- Notion 타임라인에 작성
- 유동적으로 변경 가능
- 11-14 ~ 11-15 Infinite ViewPager 구현
- 11-15 ~ 11-16 Calendar + RecyclerView 구현
- 11-16 ~ 11-18 CustomView Calendar 구현 후 RecyclerView 형식과 비교
- 11-14 ~ 11-15 Custom Gallery 구현
- 11-15 ~ 11-16 Custom Gallery에서 영상 미리보기 구현
- 11-16 ~ 11-17 Firebase에 영상 업로드
- 피그마 프로토 타입 링크 추가
- 내용 보충
- Custom gallery 구현
- ContentResolver, Media Store를 통한 갤러리 내에 비디오 data Load
- Paging 적용
- 안드로이드 버전에 따른 Permission 분기
- Infinite ViewPager2 를 사용하여 무한 스크롤 확인
- Fragment Position 적용
- ViewPager2 Fragment에 Calendar 객체 전달
- 캘린더에 표시할 날짜 Log 출력
- 영상
- Custom Gallery Item 클릭시 영상 미리보기 재생
- 캘린더
- Recyclerview Item 전달하여 view 구성
- RecyclerView 월별 달력 구현
- x월, 주(일~토) 에 대한 View 는 Activity 로 분리
- 아이템 클릭 이벤트 ( 사진, 날짜 )
- 업로드 버튼 클릭 시 선택된 데이터 객체 보내기
- 사진 Glide로 불러오기
ViewPager2 초기화 시 currentItem 애니메이션 설정
setCurrentItem(int, boolean)
// smoothScroll false 일 때 원래 position 부터 초기화
if (!smoothScroll) {
mRecyclerView.scrollToPosition(item);
return;
}
// smoothScoll true 일 때, default 값인 3 page 전부터 원래 position 으로
// 스크롤 되는 애니메이션
if (Math.abs(item - previousItem
) > 3) {
mRecyclerView.scrollToPosition(item > previousItem ? item - 3 : item + 3);
// TODO(b/114361680): call smoothScrollToPosition synchronously (blocked by b/114019007)
mRecyclerView.post(new SmoothScrollToPosition(item, mRecyclerView));
} else {
mRecyclerView.smoothScrollToPosition(item);
}
DateModel list 를 초기화 하는 방법
private val _dateFlow = MutableStateFlow(initialDateList())
val dateFlow: StateFlow<List<DateModel>> = _dateFlow.asStateFlow()
private fun initialDateList(): List<DateModel> {...}
- Shared vs State
- Shared일 땐 왜 안됐나?
- emit 시점의 문제
- ViewModel init 시점에 emit하고 그 이후 collect 되어서 화면에 나올 수가 없다.
- Custom Gallery 구현
- GridLayout으로 디바이스 내의 영상 목록 출력
- MediaStore + ContentResolver 활용
- Flow + Paging 라이브러리로 영상 목록 Load
- CoordinatorLayout으로 동적 UI 구성 (하단으로 스크롤 시, 영상 위로 밀기)
- 영상 선택 시 상단에 미리보기 재생
- ExoPlayer 활용
- 첫번째 영상 자동 재생
- 영상 반복 재생
- ExoPlayer 활용
- GridLayout으로 디바이스 내의 영상 목록 출력
- Paging 원리 이해
- Flow 이해
- 아이템 클릭시 UI 변경 (background, Text 색상 변경)
- 이전 달, 다음 달 날짜 UI 다르게 표시 & 클릭 못하도록 변경
- 캘린더 보여지게 하고 클릭 못하게 하기
- 현재 달로 돌아오기
- Date Picker 로 정해진 날짜로 넘어가기
- 전체적인 캘린더 UI 다듬기
- Firestore 영상 업로드
- Paging, Flow 학습
- 커스텀 갤러리 아이템 클릭시 클릭된 UI로 변경 및 다듬기
- 커스텀 갤러리 화면 뒤로가기, 다음 추가
- 월별 캘린더 스크롤시 Focus 자동 지정
- 캘린더 디자인 개선
- 영상 선택 후 Firebase 업로드
- 영상 선택시 해당 Item clicked UI 추가
- 상단에 넘어가기 및 돌아가기 버튼 추가
- Launcher Activity → LoginActivity로 변경
- 캘린더 - 영상 Activity 연결하기
- 데모 영상 준비
- PPT 템플릿 간단하게 만들기
캘린더
- Glide 이슈 해결
- 아이템 높이 변경
- 화면 크기에 맞게 동적 높이 부여
- 한 달에 5주, 6주 구분하여 날짜 높이 변경
- 커스텀 DatePicker 구현
영상
- 영상 업로드 화면 추가
- 뒷 배경 영상 재생
- 사용자 텍스트 작성
- Firebase Realtime database 업로드
캘린더
- Fragment, Activity 코드 정리
- 실제 썸네일 적용
영상
- 영상 편집 화면 구현 시작
공통
- collect 코드를 BindingAdapter로 걷어내는 부분 태환님께 조언듣기
데이터 구조 수정
- UID
- 년월일 (20220101 형식)
- 영상 URL
- 내용 텍스트
- 년월일 (20220101 형식)
캘린더
- 실제 썸네일 적용
- 다운로드 된 영상 재생 구현
영상
- 영상 편집 라이브러리 적용
- FFMpeg 학습
캘린더
-
Fragment, Activity 코드 정리
-
한 달의 영상을 전체 재생
-
영상 재생 화면에서 스와이프 시 다음날 영상 재생
영상
-
리팩토링 및 디테일 다듬기
- 업로드 완료 전까지 로딩화면 보여주기
- ContentResolver 필터링하기 (최소 5초 이상 영상 가져오기)
- Video 선택화면
- 비디오 item 선택시 selected UI (클릭된 효과) 추가
- 다음 버튼 가시성 개선
- 마지막 완료 버튼을 인스타처럼 하단으로
- 뒤로가기 버튼 추가
- 라이브러리 사용 툴바와 통일성있게 UI 수정
- 권한 거절 시 처리?
- 다시 액티비티 열 때마다 권한 요청
-
학습
- 사용 라이브러리 내부 동작 확인 !!!!
- 재생 슬라이드 바에 썸네일 뜨는 구현
- 동영상 편집 구현
- 편집 된 동영상 내부 저장소 저장
- FFmpeg for Android 학습
- 사용 라이브러리 내부 동작 확인 !!!!
캘린더
- firebase 실시간 업데이트 리스너 처리
- fragment, activity 코드 정리
영상
- 영상 편집 API 호환성 해결 (접근 권한)
- 영상 선택 화면
- 선택된 Item 알파값 변경
- Toolbar Collapse 조절
캘린더
- firebase 실시간 업데이트 리스너 flow lifecycle 처리
- Room 적용
- 한 달 영상 전체 재생 구현, 영상 재생 화면에서 스와이프 구현
영상
- 다음 버튼 가시성 개선 및 툴바 관련 작
- 내용 작성 화면 리팩토링
- 글자 크기 변경
- 백그라운드 색상이 글자 트래킹하도록 하기
캘린더
- 전체 재생 날짜, 텍스트 변경 구현
- 버벅거림 현상 체크
영상
- 영상 압축 기능 구현
- 자동 로그인 기능 구현
캘린더
- 멘토링 후 버벅거림 해결해보기
- 한 달 기준 영상 재생 화면 swipe 적용
영상
- 내용 작성 화면 개선 (SpanningString 적용)
공통
- 멘토님 미팅 (오후 4시)
캘린더
- 영상 재생 화면 Swipe 기능 추가
- 한 달 영상 전체 Swipe
- RecyclerView 공유 Pool 사용 시도
영상
- Video 선택화면 UI 개선
- 내용 작성화면(업로드 화면) UI 개선
캘린더
- Room 적용
- RecyclerView 공유 Pool 관련 학습
영상
- 내용 작성화면 개선 마무리
- 권한 거절 대처방안 고려해보기
공통
- Android03 팀과 미팅
캘린더
- Room을 이용한 Caching (1년 단위)
영상
- Permisson 요청에 대한 학습
캘린더
- RecyclerView 공유 Pool 관련 학습
- 월별 캘린더 성능 향상
영상
- 남은 작업 처리
- Permission 횟수에 따른 Rationale 구현
- 내용 작성 화면 버튼 위치 옮기기
공통
- 데모 PPT
- 버전 업데이트
- README.md 작성
캘린더
- 커스텀 레이아웃 캘린더 구현 및 성능 비교
- 캘린더, 영상 재생 화면 디자인 개선
영상
- 영상 업로드 프로세스 코드 정리
- 커스텀 갤러리 데이터 받아오는 로직 Result 클래스 래핑 수정
공통
- 이력서 작성
- Firebase App Distribution
캘린더
- 커스텀 레이아웃 캘린더 구현 및 성능 비교
- 캘린더, 영상 재생 화면 디자인 개선
영상
- 영상 업로드 프로세스 코드 정리
- 커스텀 갤러리 데이터 받아오는 로직 Result 클래스 래핑 수정
- 라이브라리 내부 소스 분석
- 내용 보기 화면 개선 작업
- FlowChart 추가하기 @재현 김
- Companion const 상수들 private로 변경하여 각각 액티비티 or 프래그먼트에 만들어두기
- View와 관계없는 로직들 (계산하는 것들) ViewModel의 메서드로 옮겨서 호출하는 형태로 변경하기
-
showKeyboard
util 로 빼기 - ValueAnimator duration 상수 값 string resource 정리
- binding null하지 않아도 잘 돌아감 (그래서 태환님은 따로 처리 안 한다고 함) → ViewHolder 재사용되기 때문
캘린더
- CustomCalendar 뷰 계층 제거 작업
- CalendarCustomView - viewGroup 구현
- DateCustomView - textView 구현
- ImageCustomView - ImageView 구현
영상
- Paging 심화 학습
- LoadState
- 내용 보기 및 작성 화면 개선
- ReplacementSpan
- LineBackgroundSpan
공통
- Flowchart 작성
캘린더
- transition 설정
- alpha 값 변경, 리스너 달기
영상
- 라이브러리 학습
- 내용 보기 화면 개선 마무리
- 내용 숨기기 버튼 추가
- 영상 로딩까지 Player에 썸네일 보여주기
공통
- 앱 배포
- 최종 발표 계획 회의
캘린더
- 기술 영상 캘린더 파트 자료 제작
영상
- 발표 내용 계획
- 성능 개선점 탐색
- 영상 압축 비디오코덱 변경
캘린더
- 버그 수정
영상
- PPT 영상 부분 추가
- 동영상 관련 용어 개념 정리
공통
- 시연 영상 제작
- 기술 영상 제작
- 발표 자료 제작
- 발표 스크립트 작성
- 발표 영상 녹화
- 데모 영상 제작
- 발표 영상 제작
- 데모 영상 제작
- 기술적 도전 과제 문서 작성
- 도전 과제 문서 보강
- Backlog 작성
- Github Wiki에 노션 정보 공유 문서들 추가